我想用正则表达式拆分字符串。你知道吗
例如
when [python] or [html ] demo "css html" -[javascript] score:5
从我想要的这个字符串,下面的列表
contains = ['when', 'demo']
word_press = ["css html"]
tags = ['python', 'or', 'html', '-', 'javascript']
options = [{score:5}]
"[]"
(括号)中的所有单词都将是标记列表。你知道吗""
之间的单词将出现在单词列表中。你知道吗:
的单词将在选项列表中。你知道吗我试过这个
((?:or\s|-)?\[.*?\])|(".*?")|([a-z]+:\d*)|(\S+)
它工作得很好,但我用python
>>> import re
>>> s = '''[python] or [html] how to "how to" user:2525
... [demo] how to createscore:5
... when [python] or [html] demo "css html" -[javascript] score:5'''
>>> re.findall('''((?:or\s|-)?\[.*?\])|(".*?")|([a-z]+:\d*)|(\S+)''', s)
[('[python]', '', '', ''),
('or [html]', '', '', ''),
('', '', '', 'how'),
('', '', '', 'to'),
('', '"how to"', '', ''),
('', '', 'user:2525', ''),
('[demo]', '', '', ''),
('', '', '', 'how'),
('', '', '', 'to'),
('', '', 'createscore:5', ''),
('', '', '', 'when'),
('[python]', '', '', ''),
('or [html]', '', '', ''),
('', '', '', 'demo'),
('', '"css html"', '', ''),
('-[javascript]', '', '', ''),
('', '', 'score:5', '')]
它返回列表中的元组。有没有一种方法来获取像这样的组
group1 = ['[python]', 'or [html]', '[demo]', '[python]', 'or [html]', '-[javascript]']
...
下面是一个可能的正则表达式(包括内联注释),用于捕获所需的信息(请参见demohere):
请注意,将此与
findall
一起使用将提供一个元组列表:但这里有一个函数式编程方法来重新排列它:
相关问题 更多 >
编程相关推荐