【发布时间】:2021-11-19 04:55:23
【问题描述】:
我想制作一个正则表达式来匹配一个单词,但如果它的两侧有特殊字符,则不要匹配它。
我尝试在两边都使用单词边界(\b),但它似乎没有排除特殊字符...
例如,这应该可以工作:text word-to-match more-text
但这不应该:text word-to-match-more-text
因为在要匹配的单词和更多文本之间有一个-。
我现在拥有的是:(?<=[^-\[\]{}()+?.,\\^$|#])\bword-to-match\b(?=[^-\[\]{}()+?.,\\^$|#])
我想知道是否有更优雅的方式,而不是在单词的两边都使用[^-\[\]{}()+?.,\\^$|#])。
提前致谢!
【问题讨论】:
-
使用负前瞻?
(?!...)另外,消极的后视(?<!...) -
这样写得不好的问题被这个写得好的问题所欺骗?这个问题是关于
Regex whitespace word boundary,而这个问题是Regex boundary to also exclude special characters。不幸的是,欺骗不是由答案的相似性决定的。
标签: regex