如何编写正则匹配单引号内容时忽略被反斜杠转义的单引号
正则调整方案
你需要使用支持识别转义单引号的匹配模式,正确正则如下:
'((?:\\.|[^'\\])*)'
模式逻辑说明
- 首尾的
'匹配包裹目标内容的前后单引号 - 中间的
(?:\\.|[^'\\])*是重复匹配的非捕获组,每次匹配两类合法内容:\\.:匹配反斜杠开头的转义序列,自然包含\'这种转义单引号的场景,不会把转义后的单引号识别为结束标记[^'\\]:匹配既不是单引号也不是反斜杠的普通字符
- 最内层的括号
()为捕获组,提取结果直接取该组的内容即可
使用示例(Python)
import re raw_str = r"'hello\'world'" pattern = r"'((?:\\.|[^'\\])*)'" result = re.search(pattern, raw_str) if result: print(result.group(1)) # 输出结果:hello\'world
如果你的使用场景不需要捕获外层单引号,仅匹配中间内容,可以直接使用(?:\\.|[^'\\])*配合前后断言使用,通用场景下上述模式即可覆盖需求。
内容的提问来源于stack exchange,提问作者Jason p
相关产品推荐
相关产品推荐

