我想检索括号之间的文本。这里有很多例子,但没有一个给出准确的结果。
例如,在这一行中:
Hello how are (you) doing ?
我只想检索括号内的“你”。
我正在使用以下正则表达式:/\((.*?)\)/
但这给了我(you)
.
请让我知道如何处理这个问题。
我想检索括号之间的文本。这里有很多例子,但没有一个给出准确的结果。
例如,在这一行中:
Hello how are (you) doing ?
我只想检索括号内的“你”。
我正在使用以下正则表达式:/\((.*?)\)/
但这给了我(you)
.
请让我知道如何处理这个问题。
在大多数语言中,您应该能够提取您要查找的内容,在这种情况下,这将是第一个“组”(即括号中的第一件事)。如何做到这一点很大程度上取决于语言,但通常是可能的。
如果这是不可能的,如果您不知道如何(尽管也许您想弄清楚),或者作为替代方案,您可以使用环视:(虽然可能不太普遍支持)
/(?<=\()(.*?)(?=\))/
(?<=...)
是look-behind,它查看前面的字符。
(?=...)
是前瞻,它着眼于下一个字符。
匹配后瞻和前瞻的文本不包含在实际匹配中。
这就是我用 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]);