NotePad++ REGEX 구분 기호 패턴을 사용하여 단어 가져오기

NotePad++ REGEX 구분 기호 패턴을 사용하여 단어 가져오기

현재 이 REGEX를 사용하여 접두사가 PRE_인 전체 단어를 가져오고 있습니다.

\b(PRE_)\S*

이것은 대부분의 경우에 잘 작동하지만 마침표, 쉼표 또는 기타 특수 문자와 같이 특수 문자가 단어의 일부인 경우를 처리하고 싶습니다. , ; - { } ( ) [ ]

예를 들어, 여기에 있는 단어는 다음과 같습니다.

PRE_samplewordwithoutdelimiter
PRE_sampleword.otherwordsnotincluded;
PRE_Sampleword{}...deleted
PRE_complexword()a.;.is deleted
Somewords ahead PRE_sometext() ending in other words
Words with bracket [PRE_brackettext] are deleted
PRE_sampleword is spaced out so deleted
sampleword.PRE_deleted;
notdeleted.notdeleted.PRE_

구분된 단어의 첫 부분만 찾고 싶습니다. 그래서 단어를 삭제하거나 바꿀 수 있습니다. 따라서 이 시나리오에서 접두사가 붙은 모든 PRE_ 단어를 텍스트로 ""로 바꾸는 경우 다음과 같은 결과를 얻게 됩니다.

<DELETED>
<DELETED>.otherwordsnotincluded;
<DELETED>{}...deleted
<DELETED>()a.;.is deleted
Somewords ahead <DELETED>() ending in other words
Words with bracket [<DELETED>] are deleted
<DELETED> is spaced out so deleted
sampleword.<DELETED>;
notdeleted.notdeleted.<DELETED>

다른 REGEX를 시도했지만 샘플 전체에서 완전히 일치하는 것은 없습니다. 다음과 같은 것이 작동하지 않습니다.

\b(PRE_)\S*(?:[;]|[.][-])$

여기에 도움을 주시면 대단히 감사하겠습니다.

답변1

방법 1

뒤에 공백이 아닌 문자( \S첫 번째 정규식에서) 를 모두 포함하는 PRE_대신 검색에 "구분자가 아닌 문자"를 모두 명시하면 그렇게 됩니다.

\S다음은 다음으로 대체하여 모든 예제에 적용됩니다 [A-Za-z].

\bPRE_[A-Za-z]*

-숫자, 하이픈( ) 및 밑줄( ) 을 포함하려면 _다음을 대신 사용할 수 있습니다.

\bPRE_[-A-Za-z0-9_]*

방법 2

\S그렇지 않으면 " , , , . , , , , (원하는 대로 다른 모든 \s구분 기호 제외 )"로 수정할 수 있습니다. 그런 식으로 정규식은 다음과 같습니다 ..,;{}()[]

\bPRE_[^.;,{}()[\]\s]*

이 문구는 [^blahblah]blahblah를 제외한 모든 문자를 의미합니다.

관련 정보