如何匹配字符串中的所有组?

时间:2015-06-11 18:11:40

标签: ruby regex

我想匹配dynamicCast(header.get_0('(0008,0020)'), Q$String_$1)

header.containsKey('(0008,0020)')?(dateString = dynamicCast(header.get_0('(0008,0020)'), Q$String_$1)[0]):header.containsKey('(0008,0022)')?(dateString = dynamicCast(header.get_0('(0008,0022)'), Q$String_$1)[0]):header.containsKey('(0008,0021)')?(dateString = dynamicCast(header.get_0('(0008,0021)'), Q$String_$1)[0]):header.containsKey('(0008,0023)') && (dateString = dynamicCast(header.get_0('(0008,0023)'), Q$String_$1)[0]);

我成功地使用了这个正则表达式

dynamicCast\(header.get.*, Q\$(String_|int_)\$1\)

问题是,它匹配整个块。什么是正确的正则魔法咒语来获得我想要的四场比赛?

我目前正在使用Ruby使用正则表达式重写自动生成的JavaScript。然后我用

替换每场比赛
header.get_0('(0008,0020)')

一个问题是我必须匹配一些不同的风格,在方法get_0内有许多不同的可能性。我可能需要匹配每一种可能性,然后,为什么要使用正则表达式?

dynamicCast(header.get_0('(0028,' + element + ')'), Q$String_$1)

1 个答案:

答案 0 :(得分:2)

您可以使用以下内容进行匹配:

dynamicCast\(header\.get_0\('\([^)]+\)'\), Q\$(?:String_|int_)\$1\)

请参阅DEMO