메모장 + REGEX 패턴 구분 기호로 단어 가져 오기


2

현재이 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를 제외한 모든 문자를 의미합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.