sma*_*ili 2 python regex python-regex
我正在尝试提取出该-字符串之前和之后的其余数字,但无法同时提取出两者。这是交互式终端的输出:
>>> a = '#232 - Hello There'
>>> re.findall('#(.*?) - (.*?)', a)
[('232', '')]
Run Code Online (Sandbox Code Playgroud)
为什么我的正则表达式无法正常工作?
.*?在非贪婪即它将匹配最小的子串,你需要贪婪的版本,即.*对于后者(比赛时间最长的串):
In [1143]: a = '#232 - Hello There'
In [1144]: re.findall('#(.*?) - (.*?)', a)
Out[1144]: [('232', '')]
In [1145]: re.findall('#(.*?) - (.*)', a)
Out[1145]: [('232', 'Hello There')]
Run Code Online (Sandbox Code Playgroud)
但是您应该使用str方法来处理这种简单的情况,例如,使用str.splitspliting on -:
In [1146]: a.split(' - ')
Out[1146]: ['#232', 'Hello There']
Run Code Online (Sandbox Code Playgroud)
随着str.partition上-和切片:
In [1147]: a.partition(' - ')[::2]
Out[1147]: ('#232', 'Hello There')
Run Code Online (Sandbox Code Playgroud)