2010-04-07 78 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