我想在括号中检索文字。这里有很多例子,但没有一个能给出准确的结果。
例如,在这一行:
Hello how are (you) doing ?
我想只检索括号内的“你”。
我正在使用以下正则表达式:/\((.*?)\)/
但是这给了我(you)
。
请告诉我如何处理。
答案 0 :(得分:1)
在大多数语言中,您应该能够提取您正在寻找的内容,在这种情况下,这将是第一个“组”(即括号中的第一个内容)。如何做到这一点在很大程度上取决于语言,但通常是可能的。
如果这是不可能的,如果你不知道如何(虽然你想弄明白),或者作为替代方案,你可以能够使用环顾:虽然可能不太常见,但
/(?<=\()(.*?)(?=\))/
(?<=...)
是后视,它会查看以前的字符
(?=...)
是前瞻性的,它会查看下一个字符。
文本匹配后视和前瞻不包含在实际匹配中。
答案 1 :(得分: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]);