2016-09-16 2 views
1

내 정규 표현식이 문자 앞에 나오지 않는 경우에만 패턴을 일치 시키려합니다. 내 경우에는 ^ (circumflex)입니다.문자 앞에 일치 패턴이 없습니다.

내 정규식 : 그것을 테스트하는 /[^\^]\w+/g

텍스트 : Test: ^Anotherword

일치 : "테스트"와 "Anotherword", 후자는 곡절로 시작하더라도. 내가 처음에 [^\^]을 삽입하여 막으려 고 시도했다. 그래서 나는 곡절 악센트와 일치하지 않으려 고 노력할뿐만 아니라 그 후에 나오는 단어도 일치 시키려고합니다. "다른 단어"는 일치하면 안됩니다.

[^\^] - 악센트 기호가 앞에 오는 경우 정규 표현식이 일치하지 않게해야합니다.

\w+ - 곡절 악센트 기호가없는 단어와 일치합니다.

JavaScript 제한 때문에 lookbehind를 사용할 수 없습니다.

+0

'([^^] | ^) \ w +'그러면 필요하다면 대체에'$ 1'을 쓸 수 있습니다. 아니, 작동하지만,'T'와'est'가 일치합니다 – sln

+0

그게 작동하지 않는 것 같은데, 제가 잘못하고있는 것입니까? http://regexr.com/3e855 –

+0

'([^^ \ w] | ^) \ w +'참고 http://regexr.com/3e85b 기본적으로 단어의 경계가 있습니다. – sln

답변

1

사용 ([^^\w]|^)\w+
(http://regexr.com/3e85b 참조)

그것은 기본적으로 단어 경계를 주입한다. 는 '^ T'
\w+est 일치합니다
[^\w] = \W\b\w

그렇지 않으면 [^^]이 일치합니다.

주위에 캡처 그룹을 넣으면 볼 수 있습니다.

+0

이/([^^ \ - \. \ d]) (\ -? (\ d + \.)? \ d + \ * \ -? (\ d + \.)? \ d +)/g', 나는 실제로 일하고 싶었고, 당신의 솔루션을 사용하여 작동합니다. 그것은''^ '을 추가하지 않고 작동했는데, 그것이 무엇을 설명 할 수 있습니까? –

+1

물론 JS에서, lookbehind 대신'(something | ^)'을 사용하면 _OR_ string/line의 시작 부분을 읽습니다. 뒤에 아무 문자도없는 처음 부분과 일치시킵니다. 이것은, 예를 들어 부정적인 lookbehind'(? sln

-1

당신은 일치가 엄격히 금지되어 있지 않은 경우 /(?<!^)\w+/g

http://www.regular-expressions.info/lookaround.html

+0

나는 내 질문에 진술했듯이 나는 JavaScript를 사용하기 때문에 부정적인 lookbehind를 사용할 수 없다. –

0

에 대한 설명을 참조하십시오 사용할 수 있습니다.

(?:\^\w+)|(\w+) : 두 표현식은 모두 일치하지만 그룹은 ^Anotherworld에 대해 생성되지 않습니다.

  • (?:\^\w+) : 그룹은 생성되지 않지만 ^Kawabanga과 일치합니다.
  • (\w+) : 그룹화를위한 기타 모든 것.

나는 ^Anotherworld 그룹을 가지고 싶습니다. ?:을 단순히 제거하고 싶습니다. ^뿐만 아니라 제외하면서

+0

그건 효과가 있었지만, ('^ Anotherword') –