2013-12-19 12 views
2

특정 패턴 내에서 문자열을 가져오고 바꾸고 싶습니다. $here is a string$$$$here is a string$$$으로 바꿔야합니다. 그러나 $$ 또는 $$here is text$$의 발생도 있습니다. 이는 이 아니고이 대체되어야합니다. \$.+?(\$) 검색 패턴은 그러나 여전히이 발견, 꽤 잘 $$이 빈 달러 기호를 피할 수 :특정 패턴 사이의 정규식

나는 이것을 사용하는 것이 안 $$text$$합니다. (잘 때문에 그것의 특성으로, 실제로 $$text$ 발견했지만 정말 좋은 아니에요)

내가 마지막 $ (아마 사용 정규식 부정) 이후에 나타나는 또 다른 $을 금지 할 수있는 방법을 찾아야하지만 어떻게?

미리 감사드립니다.

+0

다음과 같은 경우에 걱정이됩니까? '$ string $ otherString $' ? –

답변

4

사용 가능한 lookarounds있는 경우 :

(?<!\$)\$[^$]+\$(?!\$) 

편집 : 포함 의견

(?<!\$)   # Negative lookbehind. The character before this cannot 
       # be a $ (it can be the beginning of the string since 
       # this is a zero-width assertion 
\$    # literal $ 
[^$]    # Character class meaning "anything but a $" 
+    # Match one or more of this character class 
\$    # literal $ 
(?!\$)   # Negative lookahead. Similar to the lookbehind, but 
       # this cannot be *followed* by $ 
+0

그 덕분에, 고마워. 정확히 무엇을하고 있는지 설명해 주시겠습니까? - 편집 : 고마워! – GenericUser123

+0

@TwarlightSpikle 설명을 포함하여 대답을 편집했습니다. –

0

당신은 달러 기호 후 모든 문자에 선택됩니다. 대신 문자를 쓰려고하지만 달러 기호는 사용하십시오. 또한 1

\$[^$]+?\${1} 

{n,m}에 일치의 수를 제한하기 위해 중괄호를 사용하는 nm 시간

{n} 패턴과 일치 사이의 패턴과 일치 정확히 n 시간

[^...] 일치하는 모든 문자 주어진 문자 세트와 일치하지 않는 문자

+0

'/ \ $ {1} /'은'$$ '에 일치합니다. –

+0

[] : [$ string $$] 다른 문자열 $와 일치하는 좋은 점입니다. 내 대답을 업데이트 할게. –

+0

Actualy, 이제는 생각하고 있으므로, $ this를 제외하고는 모두 $ $와 일치하므로 하나만 허용하기 때문에 이런 일이 발생하지 않습니다. 그래서 유일한 문제는 '$ string $ string $'이있는 경우 일 것입니다. 하지만 내가 틀릴 수도있어 ... –