Estoy tratando de encontrar una cadena estrictamente declarada en una oración, el hilo dice:
Encuentre la posición de la cadena "diez" dentro de una oración, sin usar la cadena exacta directamente (esto se puede evitar de muchas maneras usando solo un poco de RegEx). Imprima tantos espacios como caracteres había en la oración original antes de que apareciera la cadena antes mencionada, y luego la cadena misma en minúsculas.
He llegado hasta aquí:
let words = 'A ton of tunas weighs more than ten kilograms.' function findTheNumber(){ let regex=/t[az]*en/gi; let output = words.match(regex) console.log(words) console.log(output) } console.log(findTheNumber())El resultado debería ser:
input = A ton of tunas weighs more than ten kilograms. output = ten(ENTER)Puede probar un enfoque de reemplazo de expresiones regulares, con la ayuda de una función de devolución de llamada:
var input = "A ton of tunas weighs more than ten kilograms."; var output = input.replace(/\w+/g, function(match, contents, offset, input_string) { if (!match.match(/^[t][e][n]$/)) { return match.replace(/\w/g, " "); } else { return match; } }); console.log(input); console.log(output); La lógica anterior coincide con cada palabra en la oración de entrada, y luego reemplaza selectivamente cada palabra que no sea ten con el mismo número de espacios.
Puedes usar
let text = 'A ton of tunas weighs more than ten kilograms.' function findTheNumber(words){ console.log( words.replace(/\b(t[e]n)\b|[^.]/g, (x,y) => y ?? " ") ) } findTheNumber(text) El \b(t[e]n)\b es básicamente un patrón de búsqueda de ten palabras completas.
La expresión regular \b(t[e]n)\b|[^.] coincidirá y capturará ten en el Grupo 1 y coincidirá con cualquier carácter excepto . (ya que es necesario mantenerlo al final). Si el Grupo 1 coincide, se mantiene ( ten permanecen en la salida), de lo contrario, el carácter coincidente se reemplaza con un espacio.
Según los caracteres que desee conservar, puede ajustar el patrón [^.] . Por ejemplo, si desea mantener todos los caracteres que no son palabras, puede usar \w .