我有以下一行:
CommonSettingsMandatory = #<Import Project="[\\.]*Shared(\\vc10\\|\\)CommonSettings\.targets," />#,true
我想要以下输出:
['commonsettingsmandatory', '<Import Project="[\\\\.]*Shared(\\\\vc10\\\\|\\\\)CommonSettings\\.targets," />', 'true'
如果我使用逗号做一个简单的正则表达式,它将分割值,如果有一个值,就像我在目标之后写了一个逗号,它会在这里拆分。 所以我想忽略##之间的文本,以确保那里没有分裂。 我真的不知道该怎么做!
答案 0 :(得分:0)
虽然您可以使用带有lookbehind的split,但我会使用此表达式捕获的组。
(\S+)\s*=\s*##([^#]+)##,\s*(.*)
m = re.Search(expression, myString)
。使用m.group(1)
作为第一个字符串,m.group(2)
作为第二个字符串,等等。
答案 1 :(得分:0)
http://docs.python.org/library/re.html#re.split
import re
string = 'CommonSettingsMandatory = #toto,tata#, true'
splitlist = re.split('\s?=\s?#(.*?)#,\s?', string)
然后splitlist
包含['CommonSettingsMandatory', 'toto,tata', 'true']
。
答案 2 :(得分:0)
如果我理解正确,你会尝试使用空格作为分隔符来拆分字符串,但是你还要删除井号之间的任何文字?
如果这是正确的,为什么不在拆分字符串之前简单地删除井号符号分隔的文本?
import re
myString = re.sub(r'#.*?#', '', myString)
myArray = myString.split(' ')
编辑:(根据修订后的问题)
import re
myArray = re.findall(r'^(.*?) = #(.*?)#,(.*?)$', myString)
这将实际返回包含您的匹配的元组数组,格式为:
[
(
'commonsettingsmandatory',
'<Import Project="[\\\\.]*Shared(\\\\vc10\\\\|\\\\)CommonSettings\\.targets," />',
'true'
)
]
(添加间距以更好地说明格式)