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