2010-04-07 25 views
29

我不是正則表達式的專家,但我的要求很簡單:我需要匹配任何至少有3個或更多字符匹配的字符串。如何使用正則表達式來匹配任何字符串,但至少需要3個字符?

因此,舉例來說,我們有字符串 「Hello World」,並與以下的匹配它:

"he" => false // only 2 characters 
"hel" => true // 3 characters match found 
+4

3個或更多字符從字符串或特定位置的任何位置?如果字面意思是「任何三個字符」是匹配,是不是任何長度爲3個或更多字符匹配的字符串?只要把字符串長度... – dawg 2010-04-07 06:00:48

+1

'hwd',true或false? – kennytm 2010-04-07 06:12:57

+1

「o w」或「ell」怎麼樣? – 2010-04-07 06:19:53

回答

8

試試這個{3}這將匹配除了新行(\ n)的任何characher

1

你可以嘗試簡單的3個點。指的是代碼在Perl下面

$ A =-M /.../ #WHERE $一個是你的字符串

39

這是蟒蛇正則表達式,但它可能工作在實現其他語言它也。

我想這取決於你認爲一個角色是什麼。如果是字母,數字和下劃線:

\w{3,} 

如果只是字母和數字:

[a-zA-Z0-9]{3,} 

Python中也有一個正則表達式的方法來從一個字符串返回所有匹配。

>>> import re 
>>> re.findall(r'\w{3,}', 'This is a long string, yes it is.') 
['This', 'long', 'string', 'yes'] 
+0

是的,我完全回答了一個與OP不同的問題。閱讀Paxdiablo的解決方案後,這是有道理的。 – 2010-04-07 06:25:35

+1

然而,這完全是我的問題,所以謝謝你的回答! – kiminoa 2014-12-30 22:18:04

2

如果你要匹配單詞的開頭開始,使用:

\b\w{3,} 

\ b:字邊界

\ w:單詞字符

{3,}:單詞字符的三次或更多次

1

我試過找到類似於主題的第一篇文章。

對於我的需求,我覺得只有 「iokldöajfASD alkjwnkmd ASDKJA wwda達AIJ ednm < .jkakla」

http://answers.oreilly.com/topic/217-how-to-match-whole-words-with-a-regular-expression/

"\b[a-zA-Z0-9]{3}\b" 

3字符的話

+0

請參閱下面的問題評論:「回答者:。{3,}的變體不是OP想要的。」 – 2014-04-12 16:36:06

+1

但它無論如何都不回答問題。搜索表達式本身必須至少有三個字符長。例如,如果用戶在搜索對話框中輸入內容,則至少要輸入三個字符才能開始高亮顯示匹配項。 OP沒有對整個單詞做任何說明。 – 2014-04-12 17:44:19

相關問題