我試圖讓這個正則表達式挑出7gh和7ui,但我只能用它挑出第一個。如果有人知道如何修改正則表達式,以便它也挑出7UI,我會認真的欣賞它。我還應該指出,我的意思是由空格分隔的字符串。如何在python中編寫一個正則表達式,它挑選以特定數字開頭的所有字符串
b = re.search(r'^7\w+','7gh ghj 7ui')
c = b.group()
我試圖讓這個正則表達式挑出7gh和7ui,但我只能用它挑出第一個。如果有人知道如何修改正則表達式,以便它也挑出7UI,我會認真的欣賞它。我還應該指出,我的意思是由空格分隔的字符串。如何在python中編寫一個正則表達式,它挑選以特定數字開頭的所有字符串
b = re.search(r'^7\w+','7gh ghj 7ui')
c = b.group()
您需要刪除^
(字符串錨開始),並使用re.findall
找到所有非重疊模式的匹配字符串:
import re
res = re.findall(r'7\w+','7gh ghj 7ui')
print(res)
如果你需要得到這些子字符串爲整個字,用字邊界包圍模式,\b
:
res = re.findall(r'\b7\w+\b','7gh ghj 7ui')
差幾秒:) –
他們可能想要一個字邊界在那裏,以避免拿起'bob7something' ... –
@akashkarothiya是的,但我認爲OP可能需要進一步調整,所以,我也建議一個字邊界。 –
刪除^
和使用findall()
:
>>> re.findall(r'7\w+','7gh ghj 7ui')
['7gh', '7ui']
不起作用。這隻能捕獲第一個字符串7 – bobsmith76
沒關係,我沒有看到關於刪除的部分^ – bobsmith76
您可能會發現更容易只是沒有使用正則表達式
[s for s in my_string.split() if s.startswith('7')]
不,我想了解正則表達式是如何工作的。我並沒有試圖完成某件事情。 – bobsmith76
的可能的複製[Python的正則表達式的findall(HTTPS:/ /stackoverflow.com/questions/7752551/python-regex-findall) – Sayse
^本質上,使用'findall'而不是'search' – Sayse
'a7b'怎麼辦?這兩種解決方案目前都將其視爲「7b」 - 是否正確? –