tengo cuerdas como
View_Export_US_Horizontals_Ultimate_DirectionalSurveys
Quiero extraer coincidencias como
[["US_Horizontals", "Ultimate", "DirectionalSurveys"]] //String Ultimate may or may not be present Tengo el siguiente RegEx, /^View_Export_(US\_(GoM|Horizontals|Onshore))((_Ultimate)?)_(\w+)/
pero obtengo la siguiente matriz de coincidencias
[["US_Horizontals", "Horizontals", "_Ultimate", "_Ultimate", "DirectionalSurveys"]] ¿Cómo omito cadenas como Horizontals & _Ultimate y solo obtengo una matriz como
[["US_Horizontals", "Ultimate", "DirectionalSurveys"]]
O
[["US_Horizontals", "DirectionalSurveys"]]
Puedes usar
\AView_Export_(US_(?:GoM|Horizontals|Onshore))(?:_(Ultimate))?_(\w+)Vea la demostración de expresiones regulares . Detalles :
\A - inicio de cadena ( ^ en Ruby regex significa inicio de cualquier línea)View_Export_ - una cadena fija(US_(?:GoM|Horizontals|Onshore)) - Grupo 1: cadena US_ y luego GoM , Horizontals o Onshore(?:_(Ultimate))? - una secuencia opcional de un guión bajo y una Ultimate palabra_ - un guión bajo(\w+) - Grupo 3: uno o más caracteres de palabra.Vea la demostración de Ruby :
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