如何使 Python 的 findall 正则表达式方法包含在内
How to make Python's findall regular expression method inclusive
我有一个如下所示的字符串。
s = 'string with %%substring1%% and %%substring2%%'
我想提取子字符串 中的文本,包括 %%
,但我不知道如何使正则表达式包含在内。
例如,re.findall('%%(.*?)%%', s, re.DOTALL)
会输出['substring1', 'substring2']
,但我真正想要的是return ['%%substring1%%', '%%substring2%%']
.
有什么建议吗?
你离得很近。将组放在匹配整个所需部分而不是仅匹配之间的字符串
>>> s = 'string with %%substring1%% and %%substring2%%'
>>> import re
>>> re.findall('(%%.*?%%)', s, re.DOTALL)
['%%substring1%%', '%%substring2%%']
其实你根本不需要括号!
>>> re.findall('%%.*?%%', s, re.DOTALL) # Even this works !!!
['%%substring1%%', '%%substring2%%']
对于一些可视化,请查看此
并检查解释 here
我有一个如下所示的字符串。
s = 'string with %%substring1%% and %%substring2%%'
我想提取子字符串 中的文本,包括 %%
,但我不知道如何使正则表达式包含在内。
例如,re.findall('%%(.*?)%%', s, re.DOTALL)
会输出['substring1', 'substring2']
,但我真正想要的是return ['%%substring1%%', '%%substring2%%']
.
有什么建议吗?
你离得很近。将组放在匹配整个所需部分而不是仅匹配之间的字符串
>>> s = 'string with %%substring1%% and %%substring2%%'
>>> import re
>>> re.findall('(%%.*?%%)', s, re.DOTALL)
['%%substring1%%', '%%substring2%%']
其实你根本不需要括号!
>>> re.findall('%%.*?%%', s, re.DOTALL) # Even this works !!!
['%%substring1%%', '%%substring2%%']
对于一些可视化,请查看此
并检查解释 here