([^\W\dA-Z && (I|X|L|V|\.)])\1{2}
适用于http://regex101.com/r/xB5sT0/1
除\b(Fuss|Mass|Bloss|Gross)
个案例外,如何使其有效?
所有列出的德语单词也可以在单词的中间,或以小写字母(fuss|mass|bloss|gross)
开头
我不想匹配像 Fusssoldat 这样的复合词,因为我知道一切都没问题,因为 Fuss + soldat 很有意义
答案 0 :(得分:0)
您可以使用丢弃技术,该技术包括将丢弃模式放在由管道(正则表达式OR)拆分的正则表达式的开头,并在末尾使用捕获组。如下所示:
discard patt 1 | discard this too | another discard pattern | (keep this)
所以,对于你的情况,你可以这样做:
\b(?:Fuss|Mass|Bloss|Gross)|([^\W\dA-Z && (I|X|L|V|\.)])\1{2}
然后访问捕获组以获取您的内容。
如果使用PCRE
(Perl Compatible RegEx)正则表达式,则可以使用(*SKIP)(*FAIL)
标记来丢弃匹配的模式。像:
\b(?:Fuss|Mass|Bloss|Gross)(*SKIP)(*FAIL)|([^\W\dA-Z && (I|X|L|V|\.)])\1{2}
如果你想了解更多关于这个技巧的信息,你可以看看这个优秀的主题:
答案 1 :(得分:0)
([^\W\dA-Z && (I|X|L|V|\.)])\1(?<!(?i)fuss|mass|bloss|gross)\1
我通过这种方式找到了解决方案:
([^\W\dA-Z && (I|X|L|V|\.)])
\1
(不像以前那样两次)(?<!(?i)fuss|mass|bloss|gross)