我有一个模式,我将其称为
我尝试使用预查(类似于下面的代码),但由于前缀和后缀之间的模式,它们无法起作用。
有没有一种方法可以在不重复模式的情况下完成这个操作(例如
关于我的模式,简短说明一下,
Z
(实际模式有点长,但对问题不重要)。简单来说,我想能够匹配\*\sZ
或Z\:
,但不能两者都匹配,也不能两者都不匹配。我尝试使用预查(类似于下面的代码),但由于前缀和后缀之间的模式,它们无法起作用。
(\*\s(?!\:))Z((?<!\*)\:)
有没有一种方法可以在不重复模式的情况下完成这个操作(例如
(\*\sZ|Z\:)
)?关于我的模式,简短说明一下,
Z
模式中没有 \*
,只有前缀中有。相反,在 Z 模式中也没有 \:
,如果在任何其他字符后面,则只在后缀中出现,但是在 Z 后面立即跟随时才有(后缀之后有一个 .*
捕获)。
pcre
测试器简化操作,但是我会用 Java。 - Rogue((?:^|\b)pre)\S+|\S+?suf(?:\b|$)
,其中 pre 代表前缀,suf 代表后缀。它将捕获所有具有给定前缀或后缀的单词。 - Saleem