2017-08-04 52 views
0

我試圖從另一個字符串的一些子串,我已經確定模式,應該得到正確的結果之間的字符串,但我覺得有我在執行一些小瑕疵。正則表達式的公式來找到其他兩個字符串或字符

s = 'Arkansas BaseballMiami (Ohio) at ArkansasFeb 17, 2017 at Fayetteville, Ark. (Baum Stadium)Score by Innings123456789RHEMiami (Ohio)000000000061Arkansas60000010X781Miami (Ohio) starters: 1/lf HALL, D.; 23/3b YACEK; 36/1b HAFFEY; 40/c SENGER; 7/dh HARRIS; 8/rf STEPHENS; 11/ss TEXIDOR; 2/2b VOGELGESANG; 5/cf SADA; 32/p GNETZ;Arkansas starters: 8/dh E. Cole; 9/ss J. Biggers; 17/lf L. Bonfield; 33/c G. Koch; 28/cf D. Fletcher; 20/2b C. Shaddy; 24/1b C Spanberger; 15/rf J. Arledge; 6/3b H. Wilson; 16/p B. Knight;Miami (Ohio) 1st - HALL, D. struck out swinging.' 

這是我嘗試在正則表達式的公式來達到我期望的產出:

teams = re.findall(r'(;|[0-9])(.*?) starters', s) 
pitchers = re.findall('/p(.*?);', s) 

投手搜索似乎工作,但該團隊輸出以下:

[('1', '7, 2017 at Fayetteville, Ark. (Baum Stadium)Score by Innings123456789RHEMiami (Ohio)000000000061Arkansas60000010X781Miami (Ohio)'), ('1', '/lf HALL, D.; 23/3b YACEK; 36/1b HAFFEY; 40/c SENGER; 7/dh HARRIS; 8/rf STEPHENS; 11/ss TEXIDOR; 2/2b VOGELGESANG; 5/cf SADA; 32/p GNETZ;Arkansas')] 

預期的產出:

['Miami (Ohio)', 'Arkansas'] 
[' GNETZ', ' B. Knight'] 

我可以不用擔心以後的投手名字剝出前導空格。

回答

1

(;|[0-9])可以[;0-9]更換。那麼我想你想表達的是「給我把字符串starters之前,最後一個數字/分號starters之前出現後,立即」,以便您可以說:「必須有沒有其他的數字/分號之間」 ,即

teams = re.findall(r'[;0-9]([^;0-9]*) starters', s) 
+0

太棒了,正是我所需要的。謝謝你的詳盡的解釋,以及! – rahlf23

相關問題