好吧,虽然模式[abc]
匹配单个字符a
, b
, or c
, 模式[^abc]
匹配任何给定的字符isn't a
, b
, or c
.
现在如果我替换string for 特点在上面的声明中,如果我也将第一个模式更改为交替结构,那么它仍然适用(abc|def|ghi)
。 -- 它将匹配三个字符的连续字符串等于abc
, def
, or ghi
。我该怎么做才能匹配任意三个字符的字符串isn't等于abc
, def
, or ghi
?
这是正则表达式的一个常见问题,简短的回答是“否”,正则表达式的操作方式没有提供“除...之外的任何 3 字母字符串”的表达方式。
However,一些正则表达式引擎允许所谓的“否定前瞻断言”。这些有点难以理解 -这个lookaround的解释 http://www.regular-expressions.info/lookaround.html似乎很好地涵盖了它,虽然技术上有点。
前瞻的重要一点是它是“零宽度”的——它不会“用完”任何字符串。所以在 Javascript 中你可以匹配这样的字符串:'abc123ghi'.match(/abc(?!def)...ghi/)
- the (?!def)
说不能有这些字母'def'
之后'abc'
,但是...
需要在那里说应该有其他 3 个字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)