2024-05-14 17:15:25 发布
网友
我有以下字符串:
{topic.equals(org.fedoraproject.prod.bodhi.buildroot_override.tag), foo.notequals(bar)} {topic.in(1,2,3), foo.equals(baz)}
我想得到结果:
卷发的范围是无限的,但基本的匹配需要:
所以卷发里可能有15场比赛。在
我认为这很管用,但我想听听大家的意见,因为它不是很优雅:
column_regex = re.compile("\w+\.\w+\(.+?\)") results = re.findall(column_regex, data)
它将给出{}中命令的结果:
然后可以对每个返回值使用第二个正则表达式:
filter_regex = re.compile("^(?P<column>\w+)\.(?P<command>\w+)\((?P<args>.+?)\)")
要进行匹配并获得值:
filter_match = re.match(filter_regex, match) filter_match.group('command')
我会尽量简单:
entries = [] for line in inputsource: entries.append(map(str.strip, line.strip().strip('{}').split(', ')))
因此,对于每一行,先去掉空白,然后用大括号,然后在逗号加上分隔命令的空格上拆分,并存储去掉空格的结果。在
这依赖于这样一个事实:命令由逗号加上空格分隔,而示例中的参数只使用逗号而不使用空格。如果您有任何违反这一区别的东西,那么您确实需要求助于正则表达式。我只想把它限制在分割上:
如果commandsep表达式前面有一个)右括号(使用look-behind断言),则commandsep表达式将在任何逗号加上可选空格上拆分。在
commandsep
)
输入结果:
>>> entries [['topic.equals(org.fedoraproject.prod.bodhi.buildroot_override.tag)', 'foo.notequals(bar)'], ['topic.in(1,2,3)', 'foo.equals(baz)']]
如果这些条目嵌入到较大的文本体中,则正则表达式可能会有所帮助,但只能查找大括号分隔的值:
import re expression = re.compile(r'{[^{}]+}') inputsource = expression.findall(largerbodyoftext)
其中expression将找到由大括号分隔的任何文本(无嵌套)。在
expression
我认为这很管用,但我想听听大家的意见,因为它不是很优雅:
它将给出{}中命令的结果:
^{pr2}$然后可以对每个返回值使用第二个正则表达式:
要进行匹配并获得值:
我会尽量简单:
因此,对于每一行,先去掉空白,然后用大括号,然后在逗号加上分隔命令的空格上拆分,并存储去掉空格的结果。在
这依赖于这样一个事实:命令由逗号加上空格分隔,而示例中的参数只使用逗号而不使用空格。如果您有任何违反这一区别的东西,那么您确实需要求助于正则表达式。我只想把它限制在分割上:
^{pr2}$如果
commandsep
表达式前面有一个)
右括号(使用look-behind断言),则commandsep
表达式将在任何逗号加上可选空格上拆分。在输入结果:
如果这些条目嵌入到较大的文本体中,则正则表达式可能会有所帮助,但只能查找大括号分隔的值:
其中
expression
将找到由大括号分隔的任何文本(无嵌套)。在相关问题 更多 >
编程相关推荐