问题描述
\\ b表达式出现问题,不应与带有特殊字符的单词匹配。
我有这个正则表达式
\bstr=flavor\b
我正在阅读有关转义特殊字符的信息,但不确定将其放在何处。
我的目标是使正则表达式不匹配以下字符串
str=flavor%20sweet --> Shouldn't match (1)
str=flavorsweet --> shouldn't match (2)
declare str=flavor --> should match (3)
2和3已经可以使用当前的正则表达式,但是1存在问题,因为它仍然与应考虑%匹配
我应该如何更改我的正则表达式以使其将%视为字符?
1楼
Allan
0
2019-02-25 06:08:20
如果您的正则表达式引擎接受否定的前瞻,则可以使用:
\bstr=flavor\b(?!%)
强制紧随您的str=flavor之后的字符不是% char。
演示: :
另外,您可以在= char周围添加[ \\t]*以接受str = flavor 。
这给出了正则表达式:( \\bstr[ \\t]*=[ \\t]*flavor\\b(?!%) )
对于旧版JS您可以使用:
\b(str=flavor)\b(?:[^%]|$)
演示: : ,如有必要,您可以在此处通过反向引用进行反向匹配。
另外,如果您不想在%上方考虑其他字符,则可以将它们添加到字符范围异常定义[^]