我想用正則表達式做在Python如下:Python的正則表達式的幫助
我給出的字符串,如列表: 'abc01 - [def02] - ghi03 - jkl04'
每個字符串將具有不同數量的項目。有些會有括號,有些則不會。
有人可以幫助我完成一個正則表達式匹配,它只包含不在括號內的項目嗎?需要刪除虛線和空格。因此,對於上面的例子中,輸出將是: [abc01,ghi03,jkl04]
感謝
我想用正則表達式做在Python如下:Python的正則表達式的幫助
我給出的字符串,如列表: 'abc01 - [def02] - ghi03 - jkl04'
每個字符串將具有不同數量的項目。有些會有括號,有些則不會。
有人可以幫助我完成一個正則表達式匹配,它只包含不在括號內的項目嗎?需要刪除虛線和空格。因此,對於上面的例子中,輸出將是: [abc01,ghi03,jkl04]
感謝
正則表達式是真的這個職位的最佳工具?
>>> S = 'abc01 - [def02] - ghi03 - jkl04'
>>> [x for x in S.split(' - ') if not (x.startswith('[') or x.endswith(']'))]
['abc01', 'ghi03', 'jkl04']
>>> a='abc01 - [def02] - ghi03 - jkl04'
>>> [ i for i in a.split(" - ") if "[" not in i ]
['abc01', 'ghi03', 'jkl04']
下面的正則表達式將解決你的問題:
\b(?<!\[)\w+
的Python代碼則是:
for match in re.finditer(r"\b(?<!\[)\w+", input_line):
item = match.group()
注:
\b
稱,該項目開始於一個字破,而不是在一個項目的中間(?<!\[)
稱,該項目不是由[
\w+
之前的項目至少匹配一個連續字字符,儘可能多的從上面的介紹,你只需要使用的findAll()來匹配的字母和數字序列(使用短碼\ W匹配字母和下面的數字)。
>>> import re
>>> re.findall(r'\w+', 'abc01 - [def02] - ghi03 - jkl04')
['abc01', 'def02', 'ghi03', 'jkl04']