假设我有一个字符串str='4'代表9'。字符串中的数字可能不同。我想获得单词的左右文本,也就是4,9。我尝试过使用split函数。有什么正则表达式可以用来获得它吗?
str='4 for 9'
for_exp=str.split('for')
使用正则表达式,
In [1]: import re
In [2]: regex = re.compile('([s S]*) for ([s S]*)')
In [3]: str='4 for 9'
In [4]: regex.match(str).groups()
Out[1]: ('4', '9')
In [5]: regex.match("44 for 54").groups()
Out[2]: ('44', '54')
In [6]: regex.match("44 advg for 54 2243").groups()
Out[3]: ('44 advg', '54 2243')
如果在()
中放入一个模式,正则表达式会将其视为一个组。因此,在找到匹配后,可以使用groups()
方法查看匹配中的各个组。
它返回一个元组,其大小等于您在正则表达式中定义的组数。
我在for
两侧的s S
上比赛。这将匹配任何字符(所有非空格和空格字符(。如果您想要onyl数字,请将正则表达式限制为d+
。
Python中的字符串实际上也是一个字符列表,因此如果只有1位,则可以执行此操作
a = str[0]
b = str[-1]
如果你想使用正则表达式,对于1个或多个数字
number = re.search('(d+)sfors(d+)', str)
第一个元素是匹配的结果,而number[1]
和number[2]
保持起始数字和结束数字。