在 RE2 语法中否定字符串末尾单词的匹配?

问题描述 投票:0回答:1

我想创建一个 RE2 正则表达式,如果字符串以特定单词结尾,则该正则表达式不应与字符串匹配。让我们以健康这个词为例

能够得到一个几乎可以做到这一点的正则表达式。

^([^h]|h(h|e(h|a(h|lh)))*([^eh]|e([^ah]|a([^hl]|l([^ht]|t[^h])))))*(h(h|e(h|a(h|lh)))*(e(a?|alt?))?)?$

但是这个会检查字符串中任何位置的单词健康状况。

我只希望当字符串以该单词结尾时进行否定匹配。

RE2 可以实现这一点吗?

regex-negation re2
1个回答
0
投票

比单词短的字符串,或者

^.{0,5}$|

以不匹配的最后一个字符结尾的字符串,或

[^h]$|

以不匹配的倒数第二个字符结尾的字符串,或

[^t]h$|

(?s)^.{0,5}$|(?:[^h]ealth|[^e]alth|[^a]lth|[^l]th|[^t]h|[^h])$

(不匹配后可以匹配固定数量的通配符而不是特定的后缀,例如

ealth
.{5}
。)

© www.soinside.com 2019 - 2024. All rights reserved.