簡體   English   中英

正則表達式命名組的多個訂單

[英]Regex multiple orders of named groups

我有一組以多個順序出現的模式。 我想用一個名稱來引用每個模式,以便對它們進行排序並提取它們的信息。 下面的代碼不起作用,因為一個命名組只能定義一次,並且將一個組放在多個 | 的操作數中。 運算符被解釋為重新定義。

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)]

有沒有辦法把同名的組放在不同的部分 | 操作員?

一旦你定義了你的命名組,你必須使用命名的反向引用。

以A組為例:

(?P=A)

在此處輸入圖像描述

請參閱文檔: https://www.regular-expressions.info/named.html?wlr=1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM