长话短说,我正在使用一个带有导致崩溃的bug的库,如果我使用带括号后的插入符号的正则表达式(例如,正则表达式[^ a])。正在处理这个错误,并且切换库不是一个简单的选择,我希望能够在现在和错误修复之间继续工作。
因此,我需要在不使用插入符的情况下表达以下两个正则表达式:
[^'] and [^"]
可以这样做吗?如果是这样,怎么样?现在可以接受一个包含所有ascii字符的正则表达式,但我正在使用unicode,因此这不是一个不漏水的解决方法。
答案 0 :(得分:5)
是的,试试:
(?!['"]).
我假设您的正则表达式库支持展望未来。
它实际上是做什么的:
(?! # start negative look ahead
['"] # match a single- or double quote
) # stop negative look ahead
. # match any character other than line breaks
用简单的英语说:“如果在向前看时,单个或双引号不能被”看到“,则匹配任何字符(除了换行符)”。
答案 1 :(得分:1)
如果用其他东西替换'char(比如说,0xdeadbeef之类的东西)然后重新替换它呢?
答案 2 :(得分:0)
您需要告诉我们库支持哪种类型的正则表达式。根据库的不同,您可能会使用类似[\x00-!#-&(-\U0010ffff]
的内容。它还取决于您使用的库是否在匹配正则表达式时使用UTF-16和代理项对,或者它是否正确匹配BMP外的unicode字符。
答案 3 :(得分:0)
如果您只是尝试匹配/删除/替换非单引号或双引号的字符,您可能会发现简单地迭代字符串中的字符并执行必要的操作更容易,更快捷。
最终,正则表达式引擎以这种方式运行,因此使用循环实现简单替换有时也会更有效。