NotePad++ 正規表現の区切り文字パターンで単語を取得する

NotePad++ 正規表現の区切り文字パターンで単語を取得する

私は現在、この正規表現を使用して、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>

さまざまな正規表現を試してみましたが、サンプル全体で完全に一致するものはありませんでした。次のようなものは機能しません。

\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 以外の任意の文字を意味します。

関連情報