我正在尝试匹配荷兰ge-berg-te等术语。 berg
本身就是一个名词,ge ... te是一个外围词,即geberg
不存在,bergte
也不存在。 gebergte
。我想要的是一个匹配berg
或gebergte
的RegEx,使用环视。我以为这会起作用
\b(?i)(ge(?=te))?berg(te)?\b
但事实并非如此。我猜是因为前瞻只检查紧接着的后续字符,而不是跨字符。是否有任何方法可以将字符与前瞻相匹配,而不受这些字符必须紧跟其他字符的约束?
有效匹配为:
无效匹配可以是:
ge- / Ge-和-te总是必须一起发生。请注意,我想通过前瞻来尝试这个。我知道它可以做得更简单,但我想看看它在方法上是否可以做这样的事情。
答案 0 :(得分:1)
这是一个基于非外观的正则表达式:
\b(berg|gebergte)\b
将其与i
(忽略大小写)标志一起使用。此正则表达式使用交替和字边界来搜索完整的单词berg
或gebergte
。
基于回顾的正则表达式:
(?<=\bge)berg(?=te\b)|\bberg\b
此正则表达式使用前瞻和后瞻搜索berg
前面的ge
,后跟te
。或者,它使用单词边界断言器berg
匹配完整的单词\b
,这也是锚点^
和$
的0宽度断言器。