我有一个像这样的输入字符串
$(xx.xx.xx)abcde$(yyy.yyy.yyy)fghijk$(zzz.zz.zz.zzz)
我希望能够提取匹配$(这里有任何东西)的字符串的每个子集,所以对于上面的例子,我想得到3个子串。 括号之间的字符不一定总是匹配相同的模式。
我尝试使用以下正则表达式
(\$\([a-z]+.*\))
但是这匹配整个字符串,因为它以' $'开头,中间的任何内容,以')结束'
希望这是有道理的。 我还应该注意到,我使用正则表达式的经验非常有限。
由于
答案 0 :(得分:2)
(\$\([a-z]+.*?\))
使用?
使您的搜索非贪婪。*
贪婪并消耗最大限度。将?
添加到*
使其不贪婪并且会停止在)
的第一个实例。
参见演示。
答案 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`