Expression régulière qui correspond à un mot, ou rien du tout
J'ai vraiment du mal à mettre une étiquette sur ce qui est probablement la raison pour laquelle j'ai été incapable de trouver ce dont j'ai besoin par le biais d'une recherche.
Je cherche à faire correspondre les éléments suivants:
- Réponse Automatique
- De Réponse Automatique
- AutomaticReply
La plate-forme que j'utilise ne permet pas pour la spécification de la casse des recherches. J'ai essayé de l'expression régulière suivante:
.*[aA]uto(?:matic)[ ]*[rR]eply.*
Penser que (?:matic)
serait la cause de mon expression pour correspondre à Auto
ou Automatic
. Toutefois, c'est seulement de correspondance Automatic
.
- Ce que je fais mal?
- Qu'est-ce que la terminologie appropriée ici?
C'est à l'aide de Perl pour le moteur d'expression régulière (je pense que c'est PCRE
mais je ne suis pas sûr).
Si c'est une expression rationnelle Perl, vous n'avez pas besoin
Je vais essayer ça. Tout ce que j'ai est un champ de saisie dans un formulaire web dans OTRS qui me permet de spécifier une expression régulière. Je n'ai pas fouillé dans le code source pour voir ce qu'il fait à l'entrée, mais il est probable que ce que vous dites sera beau travail. Merci.
Pour info, PCRE et l'expression rationnelle Perl moteur sont différents, mais surtout compatible regex systèmes. Moderne Perl prend même en charge enfichables regex moteurs. Voir pcre.org et perldoc.perl.org/perlre.html pour plus d'info.
Merci pour l'information. Je suis sur OTRS, qui fournit un formulaire en ligne à partir de laquelle de soumettre les expressions régulières. Je ne suis pas sûr de ce qu'il fait avec elle après. Je sais que OTRS est écrit en Perl. J'ai trouvé zéro de la documentation sur ce type de moteur d'Expression Régulière est en cours d'utilisation, ou de ce qu'il fait avec la valeur après qu'il a été saisi.
.*
au début et à la fin, par défaut n'est qu'une regex peut correspondre à une partie d'une chaîne et n'a pas besoin de correspondre à tous. Vous pouvez ajouter des modificateurs pour les regex avec la (?^i: ... )
étendue de modèle.Je vais essayer ça. Tout ce que j'ai est un champ de saisie dans un formulaire web dans OTRS qui me permet de spécifier une expression régulière. Je n'ai pas fouillé dans le code source pour voir ce qu'il fait à l'entrée, mais il est probable que ce que vous dites sera beau travail. Merci.
perl
!= PCRE
, Cochez la différence. Aussi, comment est-ce que votre plate-forme permettent pas insensibles à la casse ? Avez-vous essayé le réglage de la i
modificateur dans votre regex comme (?i)auto(?:matic)?\s*reply
?Pour info, PCRE et l'expression rationnelle Perl moteur sont différents, mais surtout compatible regex systèmes. Moderne Perl prend même en charge enfichables regex moteurs. Voir pcre.org et perldoc.perl.org/perlre.html pour plus d'info.
Merci pour l'information. Je suis sur OTRS, qui fournit un formulaire en ligne à partir de laquelle de soumettre les expressions régulières. Je ne suis pas sûr de ce qu'il fait avec elle après. Je sais que OTRS est écrit en Perl. J'ai trouvé zéro de la documentation sur ce type de moteur d'Expression Régulière est en cours d'utilisation, ou de ce qu'il fait avec la valeur après qu'il a été saisi.
OriginalL'auteur crush | 2014-01-17
Vous devez vous connecter pour publier un commentaire.
(?:...)
est d'modèles regex comme(...)
est de l'arithmétique: Elle ne remplace priorité.Un
?
quantificateur est ce qui fait que l'appariement option.Vous voulez
Sans l'inutile attaque et de fuite
.*
, nous obtenons les suivantes:@Adamdc78 points, qui correspond à
AutoReply
. Ceci peut être évité en utilisant la suivante:?:
nécessaire? Pourrais-je juste ne(matic)?
à la place?Vous pourriez, mais alors
matic
pourraient être détenus dans une capture d'un groupe; à moins que vous vraiment besoin de la valeur dematic
la capture d'un groupe ne fait pas de sens.Merci pour la clarification. Qu'est ce que je pensais, mais n'en était pas sûr. Est-il un nom technique de la
?
après une capture d'un groupe?C'est un quantificateur.
Donc, beaucoup de bonnes réponses, vous ne savez pas laquelle choisir!
OriginalL'auteur ikegami
Cela devrait fonctionner:
vous étiez tout simplement disparu de la
?
après(?:matic)
OriginalL'auteur Hunter McMillen
Cela suppose que vous ne voulez pas
AutoReply
pour être un hit.Vous manque juste la en option ("?") dans la regex. Si vous êtes à la recherche pour correspondre à l'ensemble de la ligne après la réponse, puis y compris la
.*
à la fin est très bien, mais votre question n'est pas de spécifier ce que vous cherchez.OriginalL'auteur adamdc78
Vous pouvez utiliser cette expression avec la ligne de début/fin des ancres:
Explication:
OriginalL'auteur anubhava
Légèrement différente. Même résultat.
Testé Contre:
OriginalL'auteur user3183018