【问题标题】:Regex multiple orders of named groups正则表达式命名组的多个订单
【发布时间】:2021-06-23 18:45:43
【问题描述】:

我有一组以多个顺序出现的模式。我想用一个名称来引用每个模式,以便对它们进行排序并提取它们的信息。下面的代码不起作用,因为一个命名组只能定义一次,并且将一个组放在多个 | 的操作数中。运算符被解释为重新定义。

a = r'(?P<A>AAA)'
b = r'(?P<B>BBB)'
c = r'(?P<C>CCC)'
d = r'(?P<D>DDD)'
x = r'(?P<X>XXX)'

cases = '|'.join([fr'{a}{b}{c}',
                  fr'{b}{c}{x}',
                  fr'{b}{a}{x}',
                  fr'{x}{d}{a}',
                  ...])

pattern = fr'({cases})'

result = [(x.group('A'),
           x.group('B'),
           x.group('C'),
           x.group('D'),
           x.group('x'))
          for x in re.finditer(pattern, long_string)]

有没有办法将同名的组放在 | 的不同部分?运营商?

【问题讨论】:

  • 是的,如果你使用 PyPi 正则表达式模块。 re 不支持。

标签: python regex regex-group


【解决方案1】:

一旦你定义了你的命名组,你必须使用命名的反向引用。

以A组为例:

(?P=A)

查看文档:https://www.regular-expressions.info/named.html?wlr=1

【讨论】:

猜你喜欢
  • 2014-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
  • 2018-01-29
  • 2020-05-23
  • 2021-11-04
相关资源
最近更新 更多