2017-07-31 112 views
0

我試圖讓這個正則表達式挑出7gh和7ui,但我只能用它挑出第一個。如果有人知道如何修改正則表達式,以便它也挑出7UI,我會認真的欣賞它。我還應該指出,我的意思是由空格分隔的字符串。如何在python中編寫一個正則表達式,它挑選以特定數字開頭的所有字符串

b = re.search(r'^7\w+','7gh ghj 7ui') 
c = b.group() 
+0

的可能的複製[Python的正則表達式的findall(HTTPS:/ /stackoverflow.com/questions/7752551/python-regex-findall) – Sayse

+0

^本質上,使用'findall'而不是'search' – Sayse

+1

'a7b'怎麼辦?這兩種解決方案目前都將其視爲「7b」 - 是否正確? –

回答

1

您需要刪除^(字符串錨開始),並使用re.findall找到所有非重疊模式的匹配字符串

import re 
res = re.findall(r'7\w+','7gh ghj 7ui') 
print(res) 

Python demo

如果你需要得到這些子字符串爲整個字,用字邊界包圍模式,\b

res = re.findall(r'\b7\w+\b','7gh ghj 7ui') 
+0

差幾秒:) –

+0

他們可能想要一個字邊界在那裏,以避免拿起'bob7something' ... –

+0

@akashkarothiya是的,但我認爲OP可能需要進一步調整,所以,我也建議一個字邊界。 –

2

刪除^和使用findall()

>>> re.findall(r'7\w+','7gh ghj 7ui') 
['7gh', '7ui'] 
+0

不起作用。這隻能捕獲第一個字符串7 – bobsmith76

+0

沒關係,我沒有看到關於刪除的部分^ – bobsmith76

0

您可能會發現更容易只是沒有使用正則表達式

[s for s in my_string.split() if s.startswith('7')] 
+0

不,我想了解正則表達式是如何工作的。我並沒有試圖完成某件事情。 – bobsmith76

相關問題