Regex检索圆括号内的文本



我想检索括号之间的文本。这里有很多例子,但没有一个给出准确的结果。

例如,在这一行:

Hello how are (you) doing ?

我只想检索括号内的"you"。

我使用以下正则表达式:/((.*?))/,但这是给我(you)

请告诉我如何处理。

在大多数语言中,您应该能够提取您正在寻找的内容,在这种情况下,这将是第一个'组'(即括号中的第一个内容)。如何做到这一点在很大程度上取决于语言,但通常是可能的。

如果这是不可能的,如果你不知道如何(尽管你可能想弄清楚),或者作为一种替代方法,你可以能够使用look-around:(这可能不太普遍支持,但)

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

(?<=...)是向后看,它看前面的字符。
(?=...)是向前看的,它看下一个字符。

文本匹配的向后查找和向前查找不包含在实际匹配中。

我是这样用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]);

最新更新