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