我想捕獲一個字x周圍沒有空格的n個單詞。我需要每個單詞的捕獲組。我可以通過以下方式(X之後的話在這裏)實現這一點:正則表達式,貪婪的量詞多個捕獲組
import regex
n = 2
x = 'beef tomato chicken trump Madonna'
right_word = '\s+(\S+)'
regex_right = r'^\S*{}\s*'.format(n*right_word)
m_right = regex.search(regex_right, x)
print(m_right.groups())
所以當x =「牛肉番茄雞王牌麥當娜」,N = 2,regex_right = '^\S*\s+(\S+)\s+(\S+)\s*'
,我也得到含有「番茄」兩個捕獲組和'雞'。然而,如果n = 5,我不會捕獲任何不是我所尋找的行爲。對於n = 5,我想捕捉所有的話'牛肉'的權利。
我已經使用了貪心量詞
regex_right = r'^\S*(\s+\S+){,n}\s*'
嘗試,但我只得到一個組(最後一個字),無論我有多少場比賽得到(而且我得到的空格以及..)。
我終於嘗試使用regex.findall,但我不能限制它的n個單詞,但必須指定字符數量?
任何人都可以幫忙嗎?
Wiktor幫助了我(見下文)謝謝。但我有一個額外的問題
如果 x ='牛肉,西紅柿,雞,王牌麥當娜' 我不知道如何捕捉沒有逗號?我不想讓羣組成爲'西紅柿',
您是否在尋找(https://regex101.com/r/dMNijJ/1) – Jan