我想用這個詞「和」除了當字「和」分裂以下字符串是引號如何用字符串拆分字符串,除非字符串在python中用引號括起來?
string = "section_category_name = 'computer and equipment expense' and date >= 2015-01-01 and date <= 2015-03-31"
所需的結果
["section_category_name = 'computer and equipment expense'","date >= 2015-01-01","date <= 2015-03-31"]
我似乎無法找到內正確的正則表達式模式,正確地分割字符串,以便「計算機和設備費用」不會被分割。
這裏是我的嘗試:
re.split('and',string)
結果
[" section_category_name = 'computer "," equipment expense' ",' date >= 2015-01-01 ',' date <= 2015-03-31']
正如你所看到的結果已經分裂「計算機和設備費用」進入榜單上不同的項目。
我也試着從this question如下:
r = re.compile('(?!)[^[]+?(?= *\[)'
'|'
'\[.+?\]')
r.findall(s)
結果:
[]
我也試着從這個question
result = re.split(r"and+(?=[^()]*(?:\(|$))", string)
結果如下:
[" section_category_name = 'computer ",
" equipment expense' ",
' date >= 2015-01-01 ',
' date <= 2015-03-31']
難題在於之前關於此主題的問題沒有解決如何通過引號內的單詞分割字符串,因爲它們解決了如何通過特殊字符或空格拆分字符串。
我能得到期望的結果,如果我修改字符串以下
string = " section_category_name = (computer and equipment expense) and date >= 2015-01-01 and date <= 2015-03-31"
result = re.split(r"and+(?=[^()]*(?:\(|$))", string)
所需的結果
[' section_category_name = (computer and equipment expense) ',
' date >= 2015-01-01 ',
' date <= 2015-03-31']
不過,我需要的功能沒有撇號內的分裂上「和」代替圓括號
我已經嘗試了所有上述解決方案,並試圖改變它們,以便能夠將單詞'和'分開,並且運氣不錯。我將繼續發佈我上面嘗試過的所有內容 – Chris
簡寫:正則表達式對於手邊的工作來說是一個糟糕的工具。這是真正構建真正解析器的地方之一。 –