简体   繁体   中英

What is the correct RegEx to extract my substring

I have an input string like this

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

I want to be able to pull out each subset of strings matching $(anything inside here), so for the example above I would like to get 3 substrings. the characters in between the brackets do not necessarily always match the same pattern.

I have tried using the following regex

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

but this matches whole string, due to the fact it starts with '$', anything in middle, and ends with ')'

Hopefully this makes sense. I should also note that I have very limited experience using regex.

Thanks

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

Use ? to make your search non greedy. * is greedy and consumes the max it can.adding ? to * makes it non greedy and it will stop at the first instance of ) .

See demo.

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

try the below

 \((.*?)\)\g

for the given string $(xx.xx.xx)abcde$(yyy.yyy.yyy)fghijk$(zzz.zz.zz.zzz) it returns the three substring..

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM