2011-06-10 103 views
4

我在做PHP中的字符串解析问题。我想要一个字典中的单词的正则表达式。这个词只能包含A-Z和a-z。我想出了这个正则表达式,但这似乎不起作用。有人可以帮忙吗?对于eadibility正则表达式的一个字

$regexp = "/[A-z]+/"; 
if(preg_match($regexp,$buffer)){  
    print $buffer . "<BR>"; 
} 

添加RKT的评论目前正在使用此正则表达式

$regexp = "/[A-Za-z]+/"; 

但仍许多不着边际的话越来越打印,对于如。

a.new,#quickbar a.new{color:#ba0000} enwiki:resourceloader:filter:minify-css:5:f2a9127573a22335c2a9102b208c73e7 wgNamespaceNumber=0; 
wgAction="view"; 
wgPageName="Roger_Federer"; 
wgMainPageTitle="‌​Main Page"; 
wgWikimediaMobileUrl="http:\/\/en.m.wikipedia.org\/wiki"; 
document.writeln("\x3cdiv id=\"localNotice\"\x3e\x3cp\x3e\x3c/p\x3e\n\x3c/div\x3e"); 
+0

你的意思是说一个字还是至少一个字?如果有一个词,你写的内容会匹配,即使还有其他内容。 – 2011-06-10 00:07:42

+0

什么,确切地说,不工作? – moteutsch 2011-06-10 00:08:48

+0

目前使用这个正则表达式$ regexp =“/ [A-Za-z] + /”; 但仍然有很多不相关的单词正在打印,例如。 a.new,#quickbar a.new {color:#ba0000} enwiki:resourceloader:filter:minify-css:5:f2a9127573a22335c2a9102b208c73e7 wgNamespaceNumber = 0; wgAction =“view”; wgPageName =“Roger_Federer”; wgMainPageTitle =“Main Page“; wgWikimediaMobileUrl =”http:\/\/en.m.wikipedia.org \/wiki“; document.writeln(“\ x3cdiv id = \”localNotice \“\ x3e \ x3cp \ x3e \ x3c/p \ x3e \ n \ x3c/div \ x3e”); – rkt 2011-06-10 00:16:38

回答

5

如果你想只匹配整个单词...

/\b[A-Z]+\b/i 
+0

除非你想匹配带连字符或复合词。 ;) – 2011-06-10 03:43:23

0

正则表达式应该是/\b[A-Za-z]+\b/,认为在字典匹配的话,你可能会想,因为话通常不能在任何位置奇比盖的东西更加严格。

+0

-1,因为这不会做OP所要求的。如上所述,这个正则表达式将匹配ANYWHERE字符串中包含一个或多个字母的ANY字符串。 – 2011-06-10 03:44:51

+0

@Rob。是啊。如果你想匹配整个单词,那么你必须将正则表达式更改为/ \ b [A-Za-z] + \ b/ – 2011-06-10 05:35:04

0

您正则表达式应该是

$regexp = "/[A-Za-z]+/"; 
+0

我仍然在输出中获得一些行,例如enwiki:resourceloader:filter:minify- css:5:f2a9127573a22335c2a9102b208c73e7 wgNamespaceNumber = 0; wgAction =“view”; wgPageName =“Roger_Federer”; wgMainPageTitle =“Main Page”; wgWikimediaMobileUrl =“http:\/\/en.m.wikipedia.org \/wiki” ; document.writeln(“\ x3cdiv id = \”localNotice \“\ x3e \ x3cp \ x3e \ x3c/p \ x3e \ n \ x3c/div \ x3e”); – rkt 2011-06-10 00:23:47

+0

我只需要在字 – rkt 2011-06-10 00:24:11

+0

-1中使用字母a-z和A-Z,因为这不会完成OP所要求的操作。如上所述,这个正则表达式将匹配ANYWHERE字符串中包含一个或多个字母的ANY字符串。 – 2011-06-10 03:44:29

3

除此之外豪华轿车比旺注意到这个问题,您正则表达式并没有做什么你认为它的确如此。

/[A-Za-z]+/ 

所有这一切都检查一个字母,无论是哪种情况,都会出现在输入的某处。如果您的输入如下所示:

1111112222222333333333A333333444444555555567 

它仍然会匹配。

你所寻找的是这样的正则表达式:

/^[A-Za-z]+$/ 

这将匹配字符串的开头,然后一个或多个字母,最后是字符串的结尾。现在,除了字母之外没有其他任何空间!