2011-06-14 2 views
2

나는 서로 정규식을 대체하여 특정 문자열 (예 : Token) 앞에 공백을 추가하려고 해요 위해 : somethingTokensomething Token 될해야하지만 something Token은 ( something Token_ 하지 something Token을 유지한다 2 공백 사용)정규식 앵커 부정의 일치 및 문자열

공백이 아닌 문자와 일치하는 정규식을 찾지 만 토큰은 포함하지만 공백 문자는 포함하지 않습니다 (그렇지 않으면 바뀌게됩니다). (실패한) 시도가 단어의 시작과 일치해야하는 \b 앵커를 무효화하려는 시도 였지만 앵커를 무효화 할 수 있는지 여부는 알 수 없습니다. 이 문제에 대한 도움을 주시면 감사하겠습니다. 감사합니다. .

+2

어떤 언어를 사용하고 있습니까? – morja

+0

저는 Java를 사용하고 있지만 가능한 한 언어에 무관심해야합니다. – Eugen

답변

3

: 표준 단어 경계 (\ b)는하지 않는 곳 그래서 본질적으로 일치하는 부정 단어 경계를 나타냅니다

\BToken 

시합. 예를 들어 실제로 과 일치하지만이 아니며 Token은 그대로입니다. 다음과 같이

+0

그렇다면 토큰을 어떻게 원자재로 만들기로 결정하셨습니까? (미래 독자를 위해). 분명히 전체 토큰을 바꾸지 않으려 고합니다. 맞습니까? –

+0

필자의 경우 Token이 원자인지 확인해야 할 필요가 없었습니다 (필자가 작업 한 텍스트의 종류에 기반 함). 그러나 좀 더 일반적인 목적의 유틸리티 메소드를 확인해야하는 경우 다른 단어 경계 (이번에는 부정 된 단어 경계가 아닌)를 사용할 수 있습니다. - b. 교체에 관해서는 그렇습니다. "토큰"을 "토큰"으로 교체하고 싶었습니다. – Eugen

0

(?<!\u0020)(?=Token)

이 아닌 공간을 뒤에 보이는 것, 다음 토큰에 대한 내다 있지만 폭이 없습니다. 이 방법으로이 일치를 공백으로 바꿀 수 있습니다.

편집 : 당신이, 자바 스크립트에서 작업해야하는 경우 \u0020?(?=Token) 는 당신이 더 순 변화를위한 공간과 공간을 대체 할 공백은 선택합니다.

난 그냥, 아마도 그것은 다른 사람이 유용 할 것이에 대한 답을 발견
+0

부정적인 lookbehind 구문은'(?

+0

감사! 내가 고칠거야. –