0

我正在尝试获取一系列令牌,例如"((token 1))", "((token 2))"。我有以下代码:

sentence = "I had a ((an adjective)) sandwich for breakfast today. It oozed all over my ((a body part)) and ((a noun))."

token_arr = sentence.scan(/\(\(.*\)\)/)
# => ["((an adjective))", "((a body part)) and ((a noun))"]

"))"上面的代码在句子中第一次出现 of 时不会停止匹配"It oozed..."。我想我需要一个负前瞻运算符,但我不确定这是否是正确的方法。

4

2 回答 2

1

典型问题。使用非贪心量词。

sentence.scan(/\(\(.*?\)\)/)

或者,替换/./为“除")"”之外的东西:

sentence.scan(/\(\([^)]*\)\)/)
于 2013-05-14T16:30:02.923 回答
1

试试这个正则表达式,它只会从匹配的内部文本中拉出非圆括号

[(]{2}([^()]*)[)]{2}

在此处输入图像描述

在此处输入图像描述

于 2013-05-14T16:30:19.037 回答