我需要一个将从字符串中解析字符串的正则表达式。
为了向您展示我的意思,请设想以下是要解析的字符串的内容:
"a string" ... \\"another \"string\"\\" ... "yet another \"string" ... "failed string\"
其中" ..."表示一些任意数据。
正则表达式需要返回列表:
["a string", "another \"string\"\\", "yet another \"string"]
修改:请注意,字面反斜杠不会停止第二场比赛
我已经尝试过发现者,但它没有找到重叠的匹配,我尝试了前瞻(?=),但我也无法让它发挥作用。
帮助?
答案 0 :(得分:1)
您可以尝试使用以下正则表达式将以"
开头的字符串(前面没有\
符号)的字符串匹配到下一个"
符号其中也没有\
(?<!\\)".*?(?<!\\)"
>>> s = r'"a string" ... "another \"string\"" ... "yet another \"string" ... "failed string\"'
>>> m = re.findall(r'".*?[^\\]"', s)
>>> m
['"a string"', '"another \\"string\\""', '"yet another \\"string"']
>>> m = re.findall(r'".*?(?<!\\)"', s)
>>> m
['"a string"', '"another \\"string\\""', '"yet another \\"string"']
>>> m = re.findall(r'(?<!\\)".*?(?<!\\)"', s)
>>> m
['"a string"', '"another \\"string\\""', '"yet another \\"string"']
<强>更新强>
>>> s = r'"a string" ... \\"another \"string\"\\" ... "yet another \"string" ... "failed string\" '
>>> m = re.findall(r'(?<!\\)".*?(?<!\\)"|(?<=\\\\)".*?\\\\"', s)
>>> m
['"a string"', '"another \\"string\\"\\\\"', '"yet another \\"string"']
>>> for i in m:
... print i
...
"a string"
"another \"string\"\\"
"yet another \"string"
答案 1 :(得分:0)
您可以使用此正则表达式:
"[\w\s\\"]+(?<!\\)"
<强> Working demo 强>
修改:我注意到您更新了输入示例。对于更新的输入,您可以使用此正则表达式:
(?:\\\\"|")[\w\s\\"]+(?:\\\\"|(?<!\\)")
<强> Working demo 强>
答案 2 :(得分:0)
答案 3 :(得分:0)