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>

我尝试了不同的 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 之外的任何字符。

相关内容