I have strings like
View_Export_US_Horizontals_Ultimate_DirectionalSurveys
I want to extract matches like
[["US_Horizontals", "Ultimate", "DirectionalSurveys"]] //String Ultimate may or may not be present
I have the following RegEx, /^View_Export_(US\_(GoM|Horizontals|Onshore))((_Ultimate)?)_(\w+)/
but i get the following matches array
[["US_Horizontals", "Horizontals", "_Ultimate", "_Ultimate", "DirectionalSurveys"]]
How do i skip strings like Horizontals
& _Ultimate
and just get an array like
[["US_Horizontals", "Ultimate", "DirectionalSurveys"]]
Or
[["US_Horizontals", "DirectionalSurveys"]]
You can use
\AView_Export_(US_(?:GoM|Horizontals|Onshore))(?:_(Ultimate))?_(\w+)
See the regex demo. Details:
\A
- start of string (^
in Ruby regex means start of any line)View_Export_
- a fixed string(US_(?:GoM|Horizontals|Onshore))
- Group 1: US_
string and then either GoM
, Horizontals
or Onshore
words(?:_(Ultimate))?
- an optional sequence of an underscore and an Ultimate
word_
- an underscore(\w+)
- Group 3: any one or more word chars.See the Ruby demo:
string = "View_Export_US_Horizontals_Ultimate_DirectionalSurveys"
rx = /\AView_Export_(US_(?:GoM|Horizontals|Onshore))(?:_(Ultimate))?_(\w+)/
one, two, three = string.match(rx).captures
puts one #=> US_Horizontals
puts two #=> Ultimate
puts three #=> DirectionalSurveys
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With