2017-05-21 68 views
0

解析符合以下結構:問題在正則表達式的分裂

positive-number str1 "str2" "str3" "str4" 

上面行應被劃分成單獨的子串。 str2,str3,str4 [可能已經轉義了\「\」引號。]。

我正在使用以下正則表達式來分割行。遵循此鏈接的建議。但是,它不提取某些lines

文件的內容從其中圖案被提取:

8 2016-06-10-17:53:22 "Str1" "Value" "Str3" 
8 2016-06-10-17:53:22 "Str1" "Value2" "Str3" 
9 2016-06-10-17:53:22 "asd" "asd" "ads" 
7 2016-06-10-17:53:22 「A quoted 」 「do about.」 「care\」 \」 quotes. 」 

正則表達式應用於:

with open('sample.txt') as f: 
    for l in f: 
     res = re.search('(.*?) (.*?) 「(.*?)」 「(.*?)」 「(.*?)」', l.replace('\n', '')) 

然而,在輸出中,只有開始值7的線被正確地分割等線路AREN 「T。

+0

這是否意味着你的字符串中可能有'\\'',意思是反斜槓和非轉義的'''?另外,您的報價是否與上述演示數據不一致? –

+0

提示:你的正則表達式中的所有問號都不是必需的 – abccd

+2

奇怪的是,你使用別人的[正則表達式](http://stackoverflow.com/a/44099276/6622817),仍然不接受該答案 – abccd

回答

0

在您的文本中,有一些雙引號(")和一些捲曲雙引號()。這就是正則表達式不識別前三個的原因。

如果你只使用雙引號,你的正則表達式適用於三個第一:https://regex101.com/r/1zjCOn/1

它不會在第四工作,因爲逃逸的問題。