我有以下情况。我有这样的字符串:
something(a,b), something(c,d)
我必须从括号中提取这些字符串字符。在这种情况下,它将是:
a b c d
我试着写正则表达式,但我失败了。我在Ruby工作。谢谢你的所有答案。
答案 0 :(得分:2)
正如Arup所指出的,这里可以使用以下正则表达式
re = /\((\w+),(\w+)\)/
请注意,这是非常基本的,可能无法捕获您需要的所有用途。你需要能够解释那里投掷的空间吗?如果是这样,他们应该被排除在比赛之外吗?这些括号中的一些可能有两个以上的项目吗?如果这不能满足您的需求,您将需要更加具体。但是,请注意http://rubular.com/是一个用于处理正则表达式的惊人资源。
如果您特别好奇如何从中提取结果,您可以这样做
string = "this(a,b) that(x,y)"
(string.scan re).flatten
#=> ["a", "b", "x", "y"]
答案 1 :(得分:1)
例如,您可以使用类似
的内容something\(([^,]*),([^)]*)
并从第1组和第2组捕获组中检索字符串。
请参阅http://rubular.com/r/pCh4YbEhZs
上的演示subject.scan(/something\(([^,]*),([^)]*)/) {|result|
# If the regex has capturing groups, result is an array with the text matched by each group (but without the overall match)
# If the regex has no capturing groups, result is a string with the overall regex match
}
答案 2 :(得分:1)
否这只是问题的变化..
使用给定的正则表达式,您可以使用以下内容将字符串中的所有匹配项收集到数组中。如果正则表达式具有捕获组,则对flatten
的调用只会使处理更容易,而您只对匹配列表感兴趣。
string = 'something(a,b), something(c,d)'
matches = string.scan(/\((\w+),(\w+)\)/).flatten