Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

287
Visualizações
¿Por qué el patrón coincide con una palabra mientras que hay dos palabras idénticas?

Por favor, eche un vistazo a esto:

ingrese la descripción de la imagen aquí

como puede ver, solo hay una coincidencia en regex101 , pero el navegador coincide con dos palabras que son idénticas. Entonces, ¿por qué regex101 no puede coincidir con la segunda palabra? De todos modos, necesito hacer coincidir ambas palabras (o más si existe) .

Observó que no está relacionado con la bandera g . Porque lo he usado en el violín.

Aquí está el violín

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Tratar con un texto así es difícil para su uso posterior. Tienes que encontrar una representación diferente de cada letra para cambiar la palabra de búsqueda de مجلس a otra como احمدی نژاد según la solución de @Wiktor.

Es por eso que el proceso de normalización es útil:

La normalización es un proceso que implica transformar caracteres y secuencias de caracteres en una representación subyacente definida formalmente. Este proceso es más importante cuando se necesita comparar el texto para clasificarlo y buscarlo, pero también se usa cuando se almacena texto para garantizar que el texto se almacene en una representación coherente.

Necesitamos normalizar nuestra cadena de entrada en primer lugar usando Normalizer::normalize() y luego, sin ningún cambio en Regular Expression, podemos ejecutar con seguridad un preg_match_all sobre ella:

 <?php $text = <<< 'STR' یک نماینده مجلس عنوان کرد: ﺩﺭ ﺩﻭﺭﻩ ﺍﺣﻤﺪﯼﻧﮋﺍﺩ ﻣﺮﺩﻡ ﺩﺭ ﺭﻓﺎﻩ ﺑﻮﺩﻧﺪ !/دولت سابق تنها دولتی که پس از انقلاب به مردم خدمت کرد! ﻳﻚ ﻧﻤﺎﯾﻨﺪﻩ ﮔﺮﻭﻩ ﭘﺎﻳﺪﺍﺭی دﺭ ﻣﺠﻠﺲ ﺷﻮﺭﺍﯼ ﺍﺳﻼﻣﯽ ﺩﺭ ﭘﺎﺳﺦ ﺑﻪ ﺳﺆﺍﻟﯽ ﺩﺭ ﻣﻮﺭﺩ ﺑﺎﺯﮔﺸﺖ ﺍﺣﻤﺪﯼﻧﮋﺍﺩ ﺑﻪ ﻋﺮﺻﻪ ﺍﻧﺘﺨﺎﺑﺎﺕ ﺍﻇﻬﺎﺭ ﺩﺍﺷﺖ : ﻣﺎ ﺍﻣﯿﺪﻭﺍﺭﯾﻢ ﺍﯾﻦ ﺍﺗﻔﺎﻕ ﺑﯿﻔﺘﺪ ﻭ ﺍﺣﻤﺪﯼﻧﮋﺍﺩ ﺑﺮﺍﯼ ﺷﺮﮐﺖ ﺩﺭ ﺍﻧﺘﺨﺎﺑﺎﺕ ﺣﺎﺿﺮ ﺷﻮﺩ چرا که دولت وی تنها دولتی است که پس از انقلاب به مردم خدمت کرده است. STR; $normalizedText = normalizer_normalize( $text , Normalizer::NFKC ); preg_match_all('~مجلس~', $normalizedText, $matches); print_r($matches);

Salidas:

 Array ( [0] => Array ( [0] => مجلس [1] => مجلس ) )

Nota: necesita la extensión php_intl.dll para estar habilitada.

Demo en vivo

over 4 years ago · Santiago Trujillo Relatório

0

Las palabras están escritas con caracteres diferentes que se ven iguales pero tienen diferentes códigos Unicode.

  • La primera palabra: \uFEE3\uFEA0\uFEE0\uFEB2
  • El que no coincide (con ... FORM en el nombre): \u0645\u062C\u0644\u0633

Aquí están los códigos:

 ‎FEE3 ARABIC LETTER MEEM INITIAL FORM ‎0645 ARABIC LETTER MEEM ‎FEA0 ARABIC LETTER JEEM MEDIAL FORM ‎062C ARABIC LETTER JEEM ‎FEE0 ARABIC LETTER LAM MEDIAL FORM ‎0644 ARABIC LETTER LAM ‎FEB2 ARABIC LETTER SEEN FINAL FORM ‎0633 ARABIC LETTER SEEN

No puede hacer coincidir ambos con una representación literal de cualquiera de las palabras, debe usar una alternancia con las dos/todas las variantes, o usar clases de caracteres para esos caracteres:

 [\x{FEE3}\x{0645}][\x{FEA0}\x{062C}][\x{FEE0}\x{0644}][\x{FEB2}\x{0633}]

Vea la demostración de expresiones regulares .

Una demostración de PHP :

 $re = '/[\x{FEE3}\x{0645}][\x{FEA0}\x{062C}][\x{FEE0}\x{0644}][\x{FEB2}\x{0633}]/u'; $str = 'یک نماینده مجلس عنوان کرد: ﺩﺭ ﺩﻭﺭﻩ ﺍﺣﻤﺪﯼﻧﮋﺍﺩ ﻣﺮﺩﻡ ﺩﺭ ﺭﻓﺎﻩ ﺑﻮﺩﻧﺪ !/دولت سابق تنها دولتی که پس از انقلاب به مردم خدمت کرد! ﻳﻚ ﻧﻤﺎﯾﻨﺪﻩ ﮔﺮﻭﻩ ﭘﺎﻳﺪﺍﺭی دﺭ ﻣﺠﻠﺲ ﺷﻮﺭﺍﯼ ﺍﺳﻼﻣﯽ ﺩﺭ ﭘﺎﺳﺦ ﺑﻪ ﺳﺆﺍﻟﯽ ﺩﺭ ﻣﻮﺭﺩ ﺑﺎﺯﮔﺸﺖ ﺍﺣﻤﺪﯼﻧﮋﺍﺩ ﺑﻪ ﻋﺮﺻﻪ ﺍﻧﺘﺨﺎﺑﺎﺕ ﺍﻇﻬﺎﺭ ﺩﺍﺷﺖ : ﻣﺎ ﺍﻣﯿﺪﻭﺍﺭﯾﻢ ﺍﯾﻦ ﺍﺗﻔﺎﻕ ﺑﯿﻔﺘﺪ ﻭ ﺍﺣﻤﺪﯼﻧﮋﺍﺩ ﺑﺮﺍﯼ ﺷﺮﮐﺖ ﺩﺭ ﺍﻧﺘﺨﺎﺑﺎﺕ ﺣﺎﺿﺮ ﺷﻮﺩ چرا که دولت وی تنها دولتی است که پس از انقلاب به مردم خدمت کرده است.'; preg_match_all($re, $str, $matches); print_r($matches[0]);

Producción:

 Array ( [0] => مجلس [1] => ﻣﺠﻠﺲ )
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda