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>

我嘗試了不同的正規表示式,但在整個範例中沒有任何東西真正匹配完全正確。像下面這樣的東西不起作用:

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

任何幫助將不勝感激。

答案1

方法一

不要\S在之後包含所有非空格字元(在第一個正規表示式中)PRE_,只需在搜尋中聲明所有「非分隔符號」就可以了。

\S透過替換為,以下內容適用於您的所有範例[A-Za-z]

\bPRE_[A-Za-z]*

如果您希望包含數字、連字號 ( -) 和底線 ( _),您可以使用以下內容:

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

方法2

否則,您可以將您修改\S為「除了\s和其他分隔符號之外的任何內容,例如., ,, ;, {. }, (, ), [, ](以及您希望的任何其他分隔符號)」這樣您的正規表示式就變成

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

該短語[^blahblah]表示 blahblah 之外的任何字符。

相關內容