我有這個字符串:Python的正則表達式,排除引號比賽
s = MY_FUNC(AVG, WFC US EQUITY, WFC US EQUITY, ">+3%", 1,1,7)
而這正則表達式,搜索括號,逗號和簡單的操作符。我需要排除雙引號內的任何匹配項,並能夠在匹配項上進行分割。請注意,解決方案仍然必須在字符串的其餘部分搜索parens,逗號和運算符。 當前正則表達式的版本:
tokenize_regex = re.compile(r'([\[\]\(\)\+\-\*/<>=!,])')
比賽爲s
是:
Match 1
1. (
Match 2
1. ,
Match 3
1. ,
Match 4
1. ,
Match 5
1. >
Match 6
1. +
Match 7
1. ,
Match 8
1. ,
Match 9
1. ,
Match 10
1. )
當我做:
tokens = Formula.tokenize_regex.split(self.formula)
print 'tokens: ' + str(tokens)
它返回:
tokens: [u'MY_FUNC', u'(', u'AVG', u',', u' WFC US EQUITY', u',', u' WFC US EQUITY', u',', u' "', u'>', u'', u'+', u'3%"', u',', u' 1', u',', u'1', u',', u'7', u')', u'']
但我需要d它排除在報價的數量,所以比賽應該是:
Match 1
1. (
Match 2
1. ,
Match 3
1. ,
Match 4
1. ,
Match 5
1. ,
Match 6
1. ,
Match 7
1. ,
Match 8
1. )
和令牌應該是:
tokens: [u'MY_FUNC', u'(', u'AVG', u',', u' WFC US EQUITY', u',', u' WFC US EQUITY', u',', u'">+3%"', u',', u' 1', u',', u'1', u',', u'7', u')', u'']
決定什麼是「內部」行情是很難用正則表達式。最好的辦法可能是使用正則表達式在預處理步驟中連續刪除引號內的所有內容,但即使嵌套引號也可能造成問題。 –
不要在這種情況下嘗試使用're.split',嘗試爲're構建一個模式。findall',它更簡單,更高效。 –
沒關係,如果它嵌套引號中斷。 – user1387717