2013-04-26 107 views
0

我想檢索括號之間的文本。這裏有很多例子,但沒有一個給出準確的結果。正則表達式檢索文本在圓括號內

例如,在這一行:

Hello how are (you) doing ? 

我想找回只是「你」,這是括號內。

我正在使用以下正則表達式:/\((.*?)\)/但這是給我(you)

請讓我知道如何處理這個。

+3

請也表明你的代碼爲止。如果他們甚至不知道你使用的是什麼語言,以及你的嘗試是什麼樣的,他們就無法幫助你。 – Tomalak 2013-04-26 08:33:07

+1

哪種編程語言?您需要獲取捕獲的組而不是捕獲本身 – 2013-04-26 08:33:15

回答

1

在大多數語言中,您應該能夠提取出您要查找的內容,這將是第一個「組」(即括號中的第一項)。如何做到這一點很大程度上取決於語言,但它通常是可能的。如果這是不可能的,如果你不知道如何(雖然也許你想知道如何),或作爲替代方案,你可以使用環視:(可能更少雖然普遍支持)

/(?<=\()(.*?)(?=\))/ 

(?<=...)是查找的背後,則檢查之前的字符。
(?=...)是向前看,它看着下一個字符。

實際匹配中不包含文本匹配後視和預見。

+1

通常情況下,有一種機制可以獲得匹配的組。有一個支持環視的引擎是不太常見的。 – nhahtdh 2013-04-26 08:51:39

+1

@nhahtdh編輯指出。 – Dukeling 2013-04-26 09:00:34

1

這是我會如何使用JavaScript和Ruby解決這個:

# Ruby 
text = "Hello how are (you) doing?" 
pattern = /\(([^\(\)]+)\)/ 
puts text.match(pattern)[1] 


// JavaScript 
var text = "Hello how are (you) doing?"; 
var pattern = /\(([^\(\)]+)\)/; 
console.log(text.match(pattern)[1]); 
+0

請注意,您正在用'\ w +'改變含義。 – Dukeling 2013-04-26 09:14:01

+0

非常正確。 '\ w +'只會匹配單詞字符。我會用'/ \(([^ \(\)] +)\)/'更新我的答案,以匹配任何不是'('或')'的東西。 – osahyoun 2013-04-26 09:17:44

相關問題