2013-04-26 79 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

相关问题