2012-02-05 61 views
0

X我試圖使用普通expresions選擇字符串中的文本,但它我拉着我聽得出來。這很瘋狂。簡單的正則表達式「選擇」在字符串

我只是想whithin(」「), '全部' 文本

$text = 'jow this should match ("text") and not (this) also not "this"'; 
preg_match($pattern, $text, $match); 
echo $match[1]; 

什麼$模式應該怎麼使用?

請幫我要去這裏瘋了...

THX,

+0

這將幫助,如果你表現出你使用'$ pattern'。 – Tomalak 2012-02-05 17:27:58

回答

1
$text = 'jow this is some ("text") and some other text'; 
$pattern = '/\("([^"]*)"\)/'; 
preg_match($pattern, $text, $match); 
echo $match[1]; 
+0

Thx作品,但如果我把它作爲$文本 - 「哇,這是一些(」文本「)​​和一些(」其他「)文本。 我正在歌廳只有1場,$比賽[2]是空的? – kevinius 2012-02-05 17:29:24

+0

應使用[preg_match_all()](http://php.net/preg_match_all),然後$匹配[1]將所有匹配的值的數組。 – nachito 2012-02-05 17:40:07

-1

試試這個:

\"[a-z]*[A-Z]*[0-9]*\" 
+0

你的意思是'\ 「[A-ZA-Z0-9] * \」',但即使如此,這將是缺少封閉'(...)'文字。 – Regexident 2012-02-05 17:49:48

+0

啊對了,忘了(和):/ – 2012-02-06 07:08:29

1

要通過這樣的東西的工作,我傾向於去一個在線正則表達式工具,或者我會用我正在使用的語言編寫一個小型的學術程序來隔離正規的exprssion。對於這一個,我用了http://regexpal.com/

如果你只是想匹配由括號和雙引號值,這應該爲你工作

\(".*?"\) 

你需要「越獄」(有前置\)的正則表達式的括號,因爲parens是正則表達式中的元字符。 。*之後的問號使得星號(0或更多)量詞不是貪婪的。如果沒有它,就像

this ("stuff") would not be ("captured") together 

短語將匹配,而不是

("stuff") would not be ("captured") 

("stuff") 

("captured") 

分開。

有一件事我沒有從你的問題得到的是你是否要匹配或捕獲之間的文本(「」)。如果你想捕捉,需要添加另一組括號中(此時轉義)是這樣的:

\("(.*?)"\) 

我不知道PHP是怎麼做的,但其他語言把它放進一個匹配組對象或成一個神奇的變量,例如$ 1,$ 2等,用於每個捕獲的物品。你必須玩弄這些才能讓事情變得順利,但這個正則表達式應該能夠幫助你理解你的問題。

相關問題