[英]Regex findall produces strange results in python3
我想使用python查找字符串的所有文檔塊。 我的第一次嘗試是:
b = re.compile('\/\*(.)*?\*/', re.M|re.S)
match = b.search(string)
print(match.group(0))
這樣就可以了,但是您會注意到:它只會打印出1個文檔塊,而不是全部。
所以我想使用findall函數,該函數表示它將輸出所有匹配項,如下所示:
b = re.compile('\/\*(.)*?\*/', re.M|re.S)
match = b.findall(string)
print(match)
但是我永遠都不會得到有用的東西,只有這些類型的數組:
[' ', ' ', ' ', '\t', ' ', ' ', ' ', ' ', ' ', '\t', ' ', ' ', ' ']
該文檔確實說它將返回空字符串,但是我不知道這怎么用。
您需要在捕獲組中移動量化器:
b = re.compile('\/\*(.*?)\*/', re.M|re.S)
為了擴大羅希特耆那教的(正確)回答了一下,跟你說了括號外的限定詞“比賽(非貪婪)任意數量的括號內的一個字符,並捕捉到一個字符”。 換句話說,它將匹配“”或“ aaaaaa”,但在“ abcde”中將僅匹配“ a”。 (並且由於它不是貪婪的,所以即使在“ aaaaaa”中也只能匹配一個“ a”)。 通過將限定符移動到括號內(即,而不是以前的(.*?)
),您現在說的是“匹配任意數量的字符,並捕獲所有字符”。
我希望這可以幫助您了解發生了什么事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.