簡體   English   中英

正則表達式的正則表達式分組(在Python中)

[英]Regular expression grouping with lookaheads (in Python)

我正在修改正則表達式以提取一組組匹配項,但是此“超組”未按預期返回復合匹配的字符串。

要匹配的字符串的格式為:

/DIR/SOMESTRING-W0.12+345.raw.gz

和我正在使用的正則表達式:

/DIR/
(?P<super>
    (?P<name>.*?)
    (?=(?P<modifier>-W\d\.\d{2}[+-]\d{3})?\.(?P<extension>raw\.gz|root)$)
)

對於命名組,我得到以下結果:

modifier: '-W0.12+345'
super: 'SOMESTRING'
name: 'SOMESTRING'
extension: 'raw.gz'

當我期待着

super: 'SOMESTRING-W0.12+345.raw.gz'

分組分組一直對我有用,但是這次不行,我不明白為什么。

希望有人能給我一些提示。

注意:此正則表達式的解釋可以在( 使用awk將特定子字符串與正則表達式匹配 )中找到。

super匹配組name匹配的相同文本,因為先行斷言不會為匹配提供任何實際字符(這就是為什么它們也被稱為“零寬度斷言”的原因)。

要獲得所需的結果,只需刪除先行斷言:

/DIR/
(?P<super>
    (?P<name>.*?)
    (?P<modifier>-W\d\.\d{2}[+-]\d{3})?\.(?P<extension>raw\.gz|root)$
)

暫無
暫無

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

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