2014-11-04 65 views
-2

我有這樣的正則表達式:我怎樣才能做到這個正則表達式?

"\w{4}[A-D]{1}[a-d]*\s*" 

我怎麼能重複[A-D]{1}[a-d]*\s*幾次的東西,如*的一部分嗎?

所以,如果我有表達:

"Bed0Dabc Babc Cabb99rrAbaaaa Daa6ab" 

正則表達式會給我:

"Bed0Dabc Babc Cabb" 
"99rrAbaaaa Daa" 
+0

什麼是你期望的輸出? – 2014-11-04 13:47:24

+1

示例輸入完全不正則表達式匹配:1.應該正則表達式開始'\ w'(以匹配任何字母數字)? 2.最後一個數字沒有任何匹配。 – Richard 2014-11-04 13:51:32

+0

你可以擺脫{1}爲「正好一個匹配」是默認無論如何,如果你沒有一個量詞。 – 2014-11-04 13:53:05

回答

0

你的正則表達式是無效的,並在啓動缺少「\」,您想要的輸出也無效,第二個字符串應該是「99rrAbaaaa Daa」。

我相信你的意思是羣體,這是一個非常基本的概念,但是,你應該使用它們之前瞭解更多關於正則表達式。 所需的正則表達式:

\w{4}([A-D][a-d]*\s*)+ 
+0

不,我不想和團隊一起做...你有另一種解決方案嗎? – user2314914 2014-11-04 14:04:27

+0

使用'\瓦特{4}(?:[A-d] [A-d] * \ S *)+'使用非捕獲組。 – Matthias 2014-11-04 14:07:49

+0

我無法想象爲什麼你不想和團體一起做,請解釋一下。 – Rusty 2014-11-04 14:08:37

0

您應該\s添加到的字符集。

import re 

data = 'Bed0Dabc Babc Cabb99rrAbaaaa Daa6ab' 
pattern = r'\w{4}(?:[A-D][a-d\s]*)+' 

matches = re.findall(pattern, data) 

其結果是:

['Bed0Dabc Babc Cabb', '99rrAbaaaa Daa'] 

?:在組的開始定義了一個非捕獲基團。如果你忽略它,你的結果將如下所示。

['Cabb', 'Daa'] 
相關問題