簡體   English   中英

Python正則表達式Findall

[英]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() ,您最終也將捕獲該值。 然后,我使用(?: ) :)忽略內部捕獲的集合。

您不必使用正則表達式

  1. 將字符串拆分為數組
  2. 檢查項目0 == 0,項目1 == 2
  3. 檢查最后一項== X
  4. 檢查項目[2:-2]每個項目都是一個數字( is_digit

就這樣

暫無
暫無

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

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