2

我没有为我的问题找到正则表达式。总是有使用反斜杠转义的示例正则表达式。

但我需要通过加倍封闭字符来转义。

示例:'o''reilly'

结果:奥莱利

4

1 回答 1

3
'(?:''|[^']*)*'

将匹配可能包含双转义引号的引号分隔字符串。这就是你找到这些字符串的正则表达式。

解释:

'      # Match a single quote.
(?:    # Either match... (use (?> instead of (?: if you can)
 ''    # a doubled quote
|      # or
[^']*  # anything that's not a quote
)*     # any number of times.
'      # Match a single quote.

现在要正确删除引号,您可以分两步完成:

一、搜索(?<!')'(?!')查找所有单引号;用任何东西代替它们。

解释:

(?<!') # Assert that the previous character (if present) isn't a quote
'      # Match a quote
(?!')  # Assert that the next character (if present) isn't a quote

其次,搜索''并全部替换为'.

于 2013-01-21T11:07:12.523 回答