我想编写一个正则表达式来捕获字符串中的所有双引号 ",除了转义的双引号。
例如,下面的字符串将仅返回第一个引号:
"HELLO\"\"\"
但以下将返回 3 个匹配项:
"HELLO\"\""\""
我使用了以下表达式,但由于在 JavaScript 中没有负向后查找,我陷入了困境:
(?<!\\)"
我看过类似的问题,但大多数都提供了编程接口(interface)。我不想使用编程接口(interface),因为我使用的是 Ace 编辑器,解决我的问题的最简单方法是定义这个正则表达式。
我想没有通用的替代方案,因为我已经尝试了针对类似问题提出的替代方案,但没有一个完全符合我的情况。
感谢您的回答!
最佳答案
您可以使用此解决方法:
(^|[^\\])"
"
仅当前面有除 \
或字符串开头 (^
) 之外的任何字符时。
但要小心,这匹配两个字符:"
和前面的字符(除非在字符串开头的情况下)。换句话说,如果您不想替换例如,'
的所有这些 "
,您需要:
theString.replace(/(^|[^\\])"/g, "$1'")
关于Javascript:负向后查找的等效正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26550021/