我正在尝试使用 Python 正则表达式来获取字符分隔字符串的第一个标记。我不想将反斜杠分隔符视为真正的分隔符,因此我使用了否定的lookbehind 断言。当分隔符是逗号时,它可以正常工作。
>>> import re
>>> re.match("(.*?)(?<!\\\\),.*", "Hello\, world!,This is a comma separated string,Third value").groups(1)[0]
'Hello\\, world!'
而通过用撇号替换逗号的完全相同的代码根本不起作用。
>>> import re
>>> re.match("(.*?)(?<!\\\\)'.*", "Hello\' world!'This is an apostrophe separated string'Third value").groups(1)[0]
'Hello'
>>>
我使用的是 python 2.7.2,但我与 Python 3 有相同的行为(在 Ideone 上测试)。Python re 文档并没有表明这'
是一个特殊字符,所以我真的很想知道,为什么我的'
待遇不同?
(请不要评论:谁会想要一个撇号分隔的文件。嗯......我愿意......)