排除特定可选后缀的正则表达式

Ant*_*nel 3 regex regex-negation

我愿意在短语中间匹配基于 [Ssinn] 的单词:

\n
\n

Sinn、Sinne、Sinnes、sinnbelebte、sinnbelebten、sinnbelebter、sinnerf\xc3\xbclelenden、sinnerf\xc3\xbcllendem、Sinnesgehalt、sinngebenden、Sinnesbest\xc3\xa4nde、Sinnlosigkeit、Sinnesmodifikation、sinnleeren Zeichen、sinnverleihende Akte、Widersinn、更宽的sinnigen A乌斯德鲁克

\n
\n

但要排除以下以-lich后缀开头的

\n
\n

辛利克特

\n
\n

例如,在以下短语中,sinngebenden应匹配,但不匹配 sinnliche

\n
\n

此外,我还认为,在犯罪行为中, der ein ganz anderer ist, je nachdem das Interesse auf das sinnliche Zeichen oder auf das mittels des Zeichens vorstellig gemachte (wenn auch durch keinerlei Phantasievorstellung verbildlichte) Objekt Gerichtet ist, liegt die Bedeutung

\n
\n

到目前为止我想出了

\n
\n

(?:\\S+)?(?:[Ss]inn)(?:\\S+)?

\n
\n

但为了排除lich后缀,我尝试了

\n
\n

(?:\\S+)?(?:[Ss]inn)((?!lich)(?:\\S+))?

\n
\n

这似乎不适用于 Javascript RegEx...

\n

谢谢!

\n

Mik*_*keM 5

建议的正则表达式是

\n
\\b[Ss]inn(?!lich)[a-z]*\\b\n
Run Code Online (Sandbox Code Playgroud)\n

当然,如果您想在单词的其余部分中允许使用其他字符,例如连字符或德语字母表中的字母,例如\xc3\xa4、\xc3\xb6和,只需将它们添加到字符集或相应地更改它即可。\xc3\xbc[a-z]

\n

请注意,如果您使用的正则表达式实现不将非 ASCII 字母视为单词字符,则单词边界断言的使用\\b将不可靠。

\n

另一种策略可能是使用否定后向查找来断言 之前的德语字母表中没有字符[Ss]inn,并省略尾随的\\b。例如:

\n
(?<![a-zA-Z\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x9f\xc3\x84\xc3\x96\xc3\x9c\xe1\xba\x9e])[Ss]inn(?!lich)[a-zA-Z\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x9f\xc3\x84\xc3\x96\xc3\x9c\xe1\xba\x9e]*\n
Run Code Online (Sandbox Code Playgroud)\n

这仍然会匹配Sinnin Sinn4U,但这可能不是问题,并且在必要时可以通过前瞻来禁止。

\n

目前尚不清楚为什么您的正则表达式以 开头(?:\\S+)?,因为它相当于\\S*, 并且 意味着匹配零个或多个非空白字符。

\n