我想创建一个 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 可以实现这一点吗?
比单词短的字符串,或者
^.{0,5}$|
以不匹配的最后一个字符结尾的字符串,或
[^h]$|
以不匹配的倒数第二个字符结尾的字符串,或
[^t]h$|
⋮
(?s)^.{0,5}$|(?:[^h]ealth|[^e]alth|[^a]lth|[^l]th|[^t]h|[^h])$
(不匹配后可以匹配固定数量的通配符而不是特定的后缀,例如
ealth
→ .{5}
。)