다음과 같은 줄이 있습니다.브래킷 안의 문자열을 큰 따옴표로 묶습니다.
fullname = (테스트 이름);
"("및 ")"안에있는 모든 문자열을 따옴표로 묶고 싶습니다.
즉 fullname = ("this"는 ""a ""test ""name ")입니다.
누군가 내가 그에게 vim 정규식을 줄 수 있습니까?
다음과 같은 줄이 있습니다.브래킷 안의 문자열을 큰 따옴표로 묶습니다.
fullname = (테스트 이름);
"("및 ")"안에있는 모든 문자열을 따옴표로 묶고 싶습니다.
즉 fullname = ("this"는 ""a ""test ""name ")입니다.
누군가 내가 그에게 vim 정규식을 줄 수 있습니까?
이 그것을 수행합니다
:%s/\v(\(.*)@<=[[:alnum:]]+(.*\))@=/"&"/g
가 입력이 잘못된 경우 정규식 (예 : 괄호) 중첩 된 패턴과 일치하는 것은 잘못된다는 점에 유의해야합니다. 위의 코드는 중첩 된 괄호를 전혀 처리하지 않으며 따옴표 붙은 괄호 나 이스케이프 된 괄호도 중첩 된 괄호를 중단합니다. 조심히 다루세요. 다음과 같이
그것은 읽
:%s substitute on all lines / matching \v (with "very magic" switched on) (\(.*)@<= a position that follows an opening paren, on this line [[:alnum:]]+ a series of alphanumeric characters (i.e. "words") (.*\))@= that are followed by a closing paren, on this line / replace with "&" the match, in quotes /g globally
그것은 정력 실제로 보면 숨김 가변 길이를 지원 않는다는 주목할만한 사실이다. 대부분의 현대 정규 표현식은 그렇지 않습니다.
이 명령은 따옴표로 기호, 괄호 또는 세미콜론, 공백, 탭하지 모든 것을두고 같습니다 :
:s/[^ \t=();][^ \t=();]*/"&"/g
이뿐만 아니라 fullname
을 인용 있습니다,하지만 당신은 수동으로 그 따옴표를 제거 할 수 있습니다.
경우에 따라 자동화 작업이 느려질 수 있으므로 수동으로 작업 할 가치가있는 경우가 있습니다.
실행 명령 :
:help substi
정력에 정규 표현식 대체에 대한 도움을 얻을 수 있습니다. 다음과 같이
내가 이런 짓을 했을까 : 인해 확인 스위치
는:s/\<\w\+\>/"&"/gc
각 교체하라는 메시지가 표시됩니다 'C'. 'fullname'및 나머지 줄의 'a'(모두)를 바꾸려면 'n'(no)을 입력하십시오.
이 답변은 실제로 문제를 해결하지 않습니다. "quote all words"부분은 수행하지만 "inside 괄호 만"부분은 완전히 잊었습니다. – Tomalak
매우 마술은 무엇을합니까? – chappar
정규식보다 정규 표현식을 짧게 만드는 특정 문자를 이스케이프 처리해야 할 필요성을 제거합니다. vim help - : h \ v를 보라. – Tomalak