使用正则表达式从python字符串中提取多个组

时间:2019-12-17 09:41:15

标签: python regex

我正在尝试从一个字符串中提取多个组,并将其保存以备以后使用,以便我可以将它们组合在一起。

基本上我想从这里开始:

frac{2+2}{9}
to this
(2+2)/(9)

我正在尝试使用正则表达式(re)完成此操作,但似乎无法使用(?P ...)将文本中的多个组保存到变量中,其中将字符串的这一部分保存到变量X中。可以正常工作,但是当我尝试使用(?P ...)和(?P ...)保存多个组时,它只返回一个。

python中是否可以使用正则表达式从字符串中捕获多个组,然后将其存储到变量中,然后再使用它们?

现在我的代码看起来像这样

stringtotest = 'frac{2+2}{9}*29+frac{2+3}{10}*29'
import re

a = re.search('frac{(.+?)}', stringtotest).group(1)
print(a)

b = re.search('backslashfrac{(?:...)}{(.+?)}', stringtotest).group(1)
print(b)

这很好用,但是我想通过做这样的事情来更有效地做。

string = 'frac{2+2}{9}*29+frac{2+3}{10}*29'
import re

both = re.search('frac{(?P<a>...)}{(?P<b>...)}', string)
print(both.groups(1))

但这会返回错误。

  

'NoneType'对象没有属性'groups'

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

这难道不是很容易吗?

stringtotest = 'frac{2+2}{9}*29+frac{2+3}{10}*29'

to_replace = [("}{", ")/("), ("frac{", "("), ("}", ")")]
for x, y in to_replace:
    stringtotest = stringtotest.replace(x, y)
print(stringtotest)