假设您有一个字符串,其中包含一个或多个随机字符序列或由某个字符分隔的单词,请举一个引号。单引号不是分隔符,用反斜杠转义。
例如:
字符串
'word''单词''单词''单词''\''\\''\''
期望捕获
基本上,必须捕获非转义单引号之间的每个字符序列。
捕获#4和#5都有一个单引号分隔符被反斜杠转义。实际上,这应该只是单引号分隔符之间的反斜杠。
到目前为止,我已经能够捕获除#6之外的所有内容。我曾经跟随正则表达式:
'((\\'[^ \ S] | [^ '])*)'
我觉得这很奇怪,因为我认为这会捕获不包含单引号的单引号之间的每个字符序列,除了转义的单引号后跟非空白字符。因此,我不知道为什么#6没有被这个表达式捕获。
答案 0 :(得分:0)
答案 1 :(得分:0)
基本上你需要匹配所有非引号的字符或任何使用反斜杠转义的字符(包括单引号或反斜杠本身):
'((?:[^'\\]|\\.)*)'
为了使这个模式有效,你可以像这样重写它(没有交替):
'([^\\']*(?:\\.[^\\']*)*)'