Maison  >  Article  >  Rechercher un texte similaire à l'aide d'expressions régulières

Rechercher un texte similaire à l'aide d'expressions régulières

王林
王林avant
2024-02-14 19:03:08804parcourir

L'éditeur php Yuzi Regular Expression est un puissant outil de correspondance de texte qui peut nous aider à trouver rapidement un texte similaire. Que ce soit dans le traitement des chaînes, l'extraction de données ou la validation des entrées, les expressions régulières jouent un rôle important. Sa flexibilité et son efficacité nous permettent de gérer plus facilement des opérations de texte complexes, améliorant ainsi considérablement l'efficacité du développement. Que vous soyez débutant ou développeur expérimenté, maîtriser les expressions régulières est une compétence essentielle. Explorons ensemble son charme !

Contenu de la question

J'ai identifié des listes de textes dans différents documents pdf. Je dois maintenant extraire quelques valeurs de chaque texte à l'aide d'expressions régulières. Certains de mes modèles ressemblent à ceci :

some text[ -]?(.+)[ ,-]+some other text

Mais le problème est que certaines lettres peuvent être fausses après reconnaissance ("0" 代替 "o""i" 代替 "l" etc.). C'est pourquoi mon modèle ne correspond pas.

Je souhaite utiliser une expression régulière comme la similarité jaro-winkler ou levenshtein afin de pouvoir partir de s0me 文本 my_value、一些其他文本 等文本中提取 my_value.

Je sais que ça a l'air génial. Mais il existe peut-être une solution à ce problème.

BTW J'utilise Java mais les solutions dans d'autres langages sont acceptables

Solution de contournement

Vous pouvez utiliser la correspondance floue si vous utilisez le module regex en python. L'expression régulière suivante autorise jusqu'à 2 erreurs par phrase. Vous pouvez utiliser des tests d'erreur plus complexes (pour les insertions, les substitutions et les suppressions), voir la documentation liée pour plus de détails.

import regex

txt = 's0me text my_value, some otner text'
pattern = regex.compile(r'(?:some text){e<=2}[ -]?(.+?)[ ,-]+(?:some other text){e<=2}')

m = pattern.search(txt)
if m is not none:
    print(m.group(1))

Sortie :

rrreerrree

Le modèle d'expression régulière (?i)(somes*w*s*texts*)([^,]+) est utilisé pour capturer des phrases similaires à "du texte" suivies de caractères avant une virgule

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer