我目前正在使用這個 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 之外的任何字符。