如何在正则表达式中正确转义问号?匹配结果未包含问号该如何解决
问题原因
你的正则有两处明显错误,导致无法匹配到问号:
- 末尾的
\b(单词边界)不符合匹配逻辑:单词边界仅存在于单词字符(字母、数字、下划线)和非单词字符的交界处,问号属于非单词字符,你的测试字符串里问号后面是空格,同样属于非单词字符,二者之间没有单词边界,末尾的\b直接导致匹配失败。 - 问号的转义多写了一个反斜杠:你写的
\\?实际要匹配的是「反斜杠+问号」两个字符,你的测试字符串里只有单独的问号,自然匹配不上。转义问号只需要1个反斜杠即可。
修正方案
把正则替换为\bWhat’s up\?就可以正常匹配到带问号的What’s up?了。如果需要确保问号后面不会跟其他单词字符,可以用\bWhat’s up\?(?!\w)做更严格的限制。
内容的提问来源于stack exchange,提问作者schutte
相关产品推荐
相关产品推荐

