内部括号中的内容正则表达式Ruby

时间:2013-01-17 20:32:51

标签: ruby regex parentheses

我正在尝试取出括号内的内容。例如,如果字符串是“(等等)这是堆栈(过度)流”,我想取出“(等等)”,但单独留下“(over)”。我正在尝试

    /\A\(.*\)/ 

但返回“(等等)这是堆栈(过度)”,我确定为什么它会返回。

1 个答案:

答案 0 :(得分:1)

最容易修复:

/\A\(.*?\)/

通常情况下,*会尝试尽可能多地匹配,因此它会一直匹配到行中的最后一个)。这称为“贪婪”匹配。在? / + / *之后设置?会使他们 -greedy,并且他们将匹配最短可能的字符串。

但请注意,这不适用于嵌套括号。那更复杂。举个例子,我假设这是一个非常简单的ad-hoc格式,其中嵌套不是一个问题。