在python中使用regex获取特定文本的左右文本



假设我有一个字符串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]保持起始数字和结束数字。

最新更新