什么是正确的RegEx来提取我的子字符串

时间:2014-10-28 11:47:44

标签: c# regex

我有一个像这样的输入字符串

$(xx.xx.xx)abcde$(yyy.yyy.yyy)fghijk$(zzz.zz.zz.zzz)

我希望能够提取匹配$(这里有任何东西)的字符串的每个子集,所以对于上面的例子,我想得到3个子串。 括号之间的字符不一定总是匹配相同的模式。

我尝试使用以下正则表达式

(\$\([a-z]+.*\))

但是这匹配整个字符串,因为它以' $'开头,中间的任何内容,以')结束'

希望这是有道理的。 我还应该注意到,我使用正则表达式的经验非常有限。

由于

2 个答案:

答案 0 :(得分:2)

(\$\([a-z]+.*?\))

使用?使您的搜索非贪婪。*贪婪并消耗最大限度。将?添加到*使其不贪婪并且会停止在)的第一个实例。

参见演示。

http://regex101.com/r/sU3fA2/28

答案 1 :(得分:0)

尝试下面的

 \((.*?)\)\g

对于给定的字符串 $(xx.xx.xx)abcde $(yyy.yyy.yyy)fghijk $(zzz.zz.zz.zzz)它返回三个子字符串.. < / p>

MATCH 1
1.  [2-10]  `xx.xx.xx`
MATCH 2
1.  [18-29] `yyy.yyy.yyy`
MATCH 3
1.  [38-51] `zzz.zz.zz.zzz`

http://regex101.com/r/bX7qR2/1