我正在尝试编写一个正则表达式来匹配XML中的以下6行。你知道吗
string = '''[<Parameter name="Number of steps" type="unsignedInteger" value="10"/>
<Parameter name="Type" type="unsignedInteger" value="1"/>
<Parameter name="Object" type="cn" value="CN=Root,Model=New Model,Vector=Reactions[v1],ParameterGroup=Parameters,Parameter=Kcat,Reference=Value"/>
<Parameter name="Minimum" type="float" value="216.862"/>
<Parameter name="Maximum" type="float" value="867.448"/>
<Parameter name="log" type="bool" value="1"/>]*'''
我需要匹配所有6行,但在任何顺序,因为程序写它似乎有时会改变哪些行去哪里。你知道吗
我正在尝试以下代码:
import re
re.findall(''' <Parameter name="Number of steps" type="unsignedInteger" value="10"/>
<Parameter name="Type" type="unsignedInteger" value="1"/>
<Parameter name="Object" type="cn" value="CN=Root,Model=New Model,Vector=Reactions[v1],ParameterGroup=Parameters,Parameter=Kcat,Reference=Value"/>
<Parameter name="Minimum" type="float" value="216.862"/>
<Parameter name="Maximum" type="float" value="867.448"/>
<Parameter name="log" type="bool" value="1"/>''',string)
但它不起作用。有人知道怎么解决我的问题吗?你知道吗
----------编辑-----------------
更具体地说,我有许多XMl,我阅读的文本,我需要提取一些信息使用正则表达式。你知道吗
scan_parameters=re.findall(''' <Task key="(.*)" name="Scan" type="scan" scheduled="true" updateModel="false">
<Report reference="(.*)" target="(.*)" append="0" confirmOverwrite="0"/>
<Problem>
<Parameter name="Subtask" type="unsignedInteger" value="5"/>
<ParameterGroup name="ScanItems">
<ParameterGroup name="ScanItem">
(<Parameter name="Maximum" type="float" value="(.*)"/>|
<Parameter name="Minimum" type="float" value="(.*)"/>|
<Parameter name="Number of steps" type="unsignedInteger" value="10"/>|
<Parameter name="Object" type="cn" value="CN=Root,Model=(.*),Vector=Reactions\[(.*)\],ParameterGroup=Parameters,Parameter=(.*),Reference=Value"/>|
<Parameter name="Type" type="unsignedInteger" value="1"/>|
<Parameter name="log" type="bool" value="1"/>){6}
</ParameterGroup>
</ParameterGroup>''',copasiML_original)
我需要它来返回一个包含(.*)中的值的列表。你知道吗
如果你不在乎它们是重复的还是丢失了一些,那么一行中只有五个匹配项:
如果确实需要使用regex执行这些操作,可以使用“正向展望”,如下所示:
但是,请注意,如果每个语句之间有任何换行符,则这将不匹配。如果它们之间有换行符,请将
(?=.*
替换为(?=[.\s]*
,否则可以在传递给match之前删除换行符Debuggex Demo
相关问题 更多 >
编程相关推荐