Se agradecería un poco de ayuda con una expresión regular de gsub en Ruby. Necesito reemplazar 3 o más barras diagonales "//////" con solo 2 barras diagonales "//" en una cadena de texto. Sin embargo, una barra inclinada simple y dos barras inclinadas deben omitirse y dejarse como están.
mis datos se parecen a este jeep/grand cherokee////////hyundai/////harley davidson//bmw y deben convertirse a jeep/grand cherokee//hyundai//harley davidson//bmw
No tengo mucha experiencia con el uso de gsub regex, aquí hay algunas cosas que he probado, pero eliminan todas las barras o agregan demasiadas.
vehicles = vehicles.gsub(/[\/\\1{3,}]/, "") vehicles = vehicles.gsub(/[\/\2+]/, "//") vehicles = vehicles.gsub(/[\/{3,}]/,"//")Cuando encierra todo el patrón entre corchetes, hace que coincida con un solo carácter.
Sus expresiones regulares significan:
[\/\\1{3,}] - un solo carácter, / , \ , 1 , { , 3 , o }[\/\2+] - / , \u0002 carácter o +[\/{3,}] - / , { , 3 , o }Puedes usar
s.gsub(/\/{3,}/, '//')Vea la demostración de Ruby en línea .