[英]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.