특정 단어와 일치하는 정규식을 작성하려면 어떻게해야합니까? 아닙니다. 따라서 정규 표현식은

특정 정규식을 작동 시키려고 노력했지만 필요한 작업을 수행 할 수 없습니다.

기본적으로 ROCKET을 찾고 싶습니다. 정규식은 대문자 또는 소문자로 구두점을 사용하거나 사용하지 않고 ROCKET과 일치해야하지만 다른 단어의 일부는 아닙니다. 따라서 정규 표현식은 다음 중 하나를 트리거합니다.

rocket
RoCKEt
hi Rocket
This is a rocket.
ROCKET's engine

그러나 ROCKET이 다음과 같은 경우에는 트리거되지 않습니다.

Rocketeer
Sprocket

온라인 정규식 생성기를 사용하여 올바르게 만들려고했지만 정확하게 일치시킬 수는 없습니다.



답변

MSDN 정규식 빠른 참조를 책갈피로 지정하는 것이 좋습니다.

영숫자가 아닌 문자로 둘러싸인 “rocket”이라는 단어는 대소 문자를 구분하지 않고 일치 시키려고합니다. 작동하는 정규식은 다음과 같습니다.

\W*((?i)rocket(?-i))\W*

영숫자가 아닌 (\ W) 문자를 찾은 다음 대소 문자를 구분하지 않는 버전의 로켓 ((? i) rocket (?-i))을 찾은 다음 다시 0 이상 ( *) 영숫자가 아닌 문자 (\ W). 로켓 일치 용어 주위의 추가 괄호는 일치를 별도의 그룹에 할당합니다. 로켓이라는 단어는 일치 그룹 1에있게됩니다.

업데이트 1 :
Matt 은이 정규 표현식이 파이썬에서 사용될 것이라고 의견에 말했습니다. 파이썬은 약간 다른 문법을 가지고 있습니다. 파이썬에서 동일한 결과를 얻으려면이 정규 표현식을 사용하고 re.IGNORECASE옵션을 compile또는 match함수에 전달하십시오 .

\W*(rocket)\W*

Regex101 이는 “I”텍스트 박스 옆 정규식 입력에 입력하여 시뮬레이션 할 수있다.

업데이트 2 Ismael은 “1rocket1″과 일치 할 수 있기 때문에 정규 표현식이 정확하지 않다고 언급했습니다. 그는 훨씬 더 나은 해결책, 즉

(?:^|\W)rocket(?:$|\W)


답변

이 경우 미리보기가 과도하다고 생각하며 ignorecase옵션 과 함께 단어 경계를 사용하는 것이 좋습니다 .

\brocket\b

다시 말해, 파이썬에서 :

>>> x="rocket's"
>>> y="rocket1."
>>> c=re.compile(r"\brocket\b",re.I)  # with the ignorecase option
>>> c.findall(y)
[]
>>> c.findall(x)
['rocket']

답변

grep하고 sed, 당신은 사용할 수 있습니다 \<rocket\>. 으로 grep-i옵션은 그것을 대소 문자를 구별를 (만들 것입니다 내가 사건을 gnore) :

grep -i '\<rocket\>'

모든 sed정규 표현식을 대소 문자를 구분하지 않는 방법으로 알지 못하지만 항상 원시인 방법이 있습니다.

sed -n '/\<[Rr][Oo][Cc][Kk][Ee][Tt]\>/p'

답변

전체 단어 만 검색 옵션을 사용하십시오.

문장 부호까지는 풍미 / 맛을 알 때까지는 대답 할 수 없습니다.

매우 오래된 스레드이므로 나중에 필요로 방문 할 수있는 사람을 위해 게시되었습니다. 실을 만든 사람들이 다른 곳으로 옮겼을 수도 있습니다.