2011-06-10 102 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]+$/ 

這將匹配字符串的開頭,然後一個或多個字母,最後是字符串的結尾。現在,除了字母之外沒有其他任何空間!