[英]How do I repeat a parenthesized group n times using a Python regular expression?
我正在嘗試從許多字符串中獲取|<digit><whitespace>
對。 我正在使用正則表達式(\\|\\d+\\s+){2}
執行此操作,即:
>>> import re
>>> s = '|11 |22 |\n|33 |444 |\n'
>>> re.findall('(\|\d+\s+){2}', s)
['|22 ', '|444 ']
我期望的是:
['|11 |22 |', '|33 |444 |']
因為()應該定義一個組,而{2}應該重復兩次。 它為什么不這樣做,還有什么更好的方法呢?
將捕獲組更改為非捕獲組並添加\\|
在您的正則表達式的最后。 因為如果有任何捕獲組,則re.findall
將返回捕獲的字符,否則它將返回所有匹配的字符。 由於您的正則表達式包含一個貪婪的捕獲組,因此它僅捕獲最后一個重復,但匹配所有先前的重復。
>>> s = '|11 |22 |\n|33 |444 |\n'
>>> re.findall('(?:\|\d+\s+){2}\|', s)
['|11 |22 |', '|33 |444 |']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.