我正在尝试匹配荷兰语 ge-berg-te 等字词。 berg
本身是一个名词,而 ge...te 是一个环缀,即 geberg
不存在,bergte
也不存在。 gebergte
可以。我想要的是匹配 berg
或 gebergte
的 RegEx,并使用 lookaround。我在想这会起作用
\b(?i)(ge(?=te))?berg(te)?\b
但事实并非如此。我猜是因为前瞻只检查紧随其后的字符,而不是跨字符。有没有什么方法可以先行匹配字符,而不必限制这些字符必须紧跟在其他字符之后?
有效匹配为:
- 伯格
- 伯格
- 格贝格
- 变态
无效匹配项可能是:
- 格贝格
- 格贝格
- 贝格特
- 贝格
ge-/Ge- 和 -te 总是同时出现。请注意,我想先行尝试一下。我知道它可以做得更简单,但我想看看这样做在方法论上是否可行。
请您参考如下方法:
这是一个基于非环视的正则表达式:
\b(berg|gebergte)\b
将它与 i
(忽略大小写)标志一起使用。此正则表达式使用交替和单词边界来搜索完整单词 berg
或 gebergte
。
RegEx Demo
基于环视的正则表达式:
(?<=\bge)berg(?=te\b)|\bberg\b
此正则表达式使用前瞻和后视来搜索 berg
,前面是 ge
,后面是 te
。或者,它使用单词边界断言器 \b
匹配完整的单词 berg
,它也是 0 宽度断言器,如 anchor ^
和 $
.