我想使用Python正則表達式來獲取字符分隔字符串的第一個標記。我不想將反斜槓分隔符視爲真正的分隔符,所以我使用了負向後置斷言。當分隔符是逗號時,它可以毫無問題地工作。撇號內部撇號斷言
>>> 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 documentation並不表示'
是一個特殊字符,所以我真的想知道,爲什麼我的'
對待不同?
(請,沒有評論:誰希望有一個撇號分隔的文件嘛...我...。)在
很奇怪。似乎'ord(「\'」)'和'ord(「'」)'之間沒有區別。您是否在搜索字符串中嘗試了一個非轉義的單引號? – dsummersl 2013-05-03 11:10:46
不,沒有 - 逃脫一個非轉義角色只是給你那個角色。 – katrielalex 2013-05-03 11:12:06