[英]Python Regular Expressions Findall
為了瀏覽數據,我使用正則表達式。 我的正則表達式之一是(它們是動態的,並且會根據計算機需要查找的內容而變化-使用它們來搜索游戲AI的數據):
O,2,([0-9],?){0,},X
在2之后,可以(而且很可能會是)其他數字,每個數字后跟一個逗號。
據我了解,這將匹配:
O,2,(any amount of numbers - can be 0 in total, each followed by a comma),X
很好,並且(在RegExr中)適用於:
O,4,1,8,6,7,9,5,3,X
X,6,3,7,5,9,4,1,8,2,T
O,2,9,6,7,11,8,X # matches this
O,4,6,9,3,1,7,5,O
X,6,9,3,5,1,7,4,8,O
X,3,2,7,1,9,4,6,X
X,9,2,6,8,5,3,1,X
我的問題是,我需要匹配提供的原始數字之后的所有數字。 因此,我想匹配(在示例中) 9,6,7,11,8
。
但是,在Python中實現此功能:
import re
pattern = re.compile("O,2,([0-9],?){0,},X")
matches = pattern.findall(s) # s is the above string
matches
是['8']
(最后一個數字),但是我需要匹配給定之后的所有數字(因此'9,6,7,11,8'
)。
注意:我需要使用pattern.findall
因為您將不止一個匹配項(我縮短了字符串列表,但實際上大約有2萬個字符串),並且我需要找到最短的字符串(因為這是最短的字符串) AI獲勝的方式)。
有沒有辦法匹配整個字符串(或僅匹配我提供的最后一個數字)?
提前致謝!
用這個:
O,2,((?:[0-9],?){0,}),X
實際操作中查看它: http : //regex101.com/r/cV9wS1
import re
s = '''O,4,1,8,6,7,9,5,3,X
X,6,3,7,5,9,4,1,8,2,T
O,2,9,6,7,11,8,X
O,4,6,9,3,1,7,5,O
X,6,9,3,5,1,7,4,8,O
X,3,2,7,1,9,4,6,X
X,9,2,6,8,5,3,1,X'''
pattern = re.compile("O,2,((?:[0-9],?){0,}),X")
matches = pattern.findall(s) # s is the above string
print matches
輸出:
['9,6,7,11,8']
解釋:
通過將整個值捕獲包裝在()
2,
和,X
中()
,您最終也將捕獲該值。 然后,我使用(?: )
:)忽略內部捕獲的集合。
您不必使用正則表達式
is_digit
) 就這樣
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.