Reglas para la coincidencia de números en Palabras observadas

Como se muestra en la figura siguiente, las palabras coincidentes son “Test”, “123” y “测试” (que significa “Test” en chino simplificado).

Cuando una coincidencia es exitosa, cualquier número que preceda inmediatamente a la palabra que coincide se incluirá en el resultado de la coincidencia, e incluso esto se aplica a los caracteres Unicode.
Los números que siguen inmediatamente a la palabra que coincide no muestran este comportamiento;
Esto también afecta a la coincidencia de números, incluidos los casos en que las cadenas consisten únicamente en letras inglesas y números. Por ejemplo, “Test123” solo puede coincidir con “Test”, pero no puede coincidir con “123” ni con “Test123” (ella misma).

Puede que esté un poco desactualizado: ¿qué tipo de regla de coincidencia es esta? ¿Podría alguien explicármelo? :melting_face:

1 me gusta

Parece un posible error de expresión regular (regex), que siempre son un poco complicadas de desenredar. @zogstrip, tal vez puedas echarle un vistazo, ya que has trabajado en esta área recientemente (aunque esto parece haber existido por un tiempo).

Aquí está mi entendimiento…

Cuando estamos comprobando palabras, hay 3 segmentos que deben coincidir: el inicial, la palabra y el final. Hemos establecido que los segmentos inicial y final sean caracteres no alfabéticos… estos podrían ser puntuación, espacios O números. Los números son lo que está arruinando la coincidencia aquí. La intención es poder detectar palabras incluso si hay puntuación o lo que sea antes/después de la palabra.

Así que la regex ve 123Test, encuentra Test, mira antes y encuentra 3, y eso coincide como un “no alfabético”, luego mira después y encuentra el final de la palabra. Así que coincide con 3Test.

Creo que necesitamos comprobar caracteres que no sean letras Y que no sean números en los segmentos inicial/final para evitar esto. No estoy seguro si hay una razón por la que no incluimos los números o si es solo un descuido.

2 Me gusta

¿Quizás este tema deba moverse a la categoría Bug?

1 me gusta

Esto debería arreglarlo de verdad esta vez. Hemos tenido cierta inconsistencia entre la versión de Ruby y la versión de JS de las expresiones regulares utilizadas, pero eso ya no es necesario.

3 Me gusta