J'ai vraiment du mal à mettre une étiquette à ce sujet, c'est probablement pourquoi je n'ai pas pu trouver ce dont j'ai besoin lors d'une recherche.
Je cherche à faire correspondre les éléments suivants:
La plate-forme que j'utilise ne permet pas la spécification de recherches insensibles à la casse. J'ai essayé l'expression régulière suivante:
.*[aA]uto(?:matic)[ ]*[rR]eply.*
Pensant que (?:matic)
ferait correspondre mon expression à Auto
ou Automatic
. Cependant, il ne correspond qu'à Automatic
.
Ceci utilise Perl pour le moteur d'expression régulière (je pense que c'est PCRE
mais je ne suis pas sûr).
(?:...)
consiste à regexer des motifs comme (...)
est à l'arithmétique: il remplace simplement la priorité.
ab|cd # Matches ab or cd
a(?:b|c)d # Matches abd or acd
UNE ?
quantifier est ce qui rend la correspondance facultative.
a? # Matches a or an empty string
abc?d # Matches abcd or abd
a(?:bc)?d # Matches abcd or ad
Tu veux
(?:matic)?
Sans le début et la fin inutiles .*
, nous obtenons ce qui suit:
/[aA]uto(?:matic)?[ ]*[rR]eply/
Comme le souligne @ adamdc78, cela correspond à AutoReply
. Cela peut être évité en utilisant les éléments suivants:
/[aA]uto(?:matic[ ]*|[ ]+)[rR]eply/
ou
/[aA]uto(?:matic|[ ])[ ]*[rR]eply/
Cela devrait fonctionner:
/.*[aA]uto(?:matic)? *[rR]eply/
vous manquiez simplement le ?
après (?:matic)
[Aa]uto(?:matic ?| )[Rr]eply
Cela suppose que vous ne voulez pas que AutoReply
soit un hit valide.
Vous manquez juste le facultatif ("?") dans l'expression régulière. Si vous cherchez à faire correspondre la ligne entière après la réponse, ajoutez le .*
à la fin, c'est bien, mais votre question n'a pas précisé ce que vous cherchiez.
Vous pouvez utiliser cette expression régulière avec des ancres de début/fin de ligne:
^[aA]uto(?:matic)? *[rR]eply$
Explication:
^ assert position at start of the string
[aA] match a single character present in the list below
aA a single character in the list aA literally (case sensitive)
uto matches the characters uto literally (case sensitive)
(?:matic)? Non-capturing group
Quantifier: Between zero and one time, as many times as possible, giving back as needed
[greedy]
matic matches the characters matic literally (case sensitive)
* matches the character literally
Quantifier: Between zero and unlimited times, as many times as possible, giving back
as needed [greedy]
[rR] match a single character present in the list below
rR a single character in the list rR literally (case sensitive)
eply matches the characters eply literally (case sensitive)
$ assert position at end of the string
Légèrement différent. Même résultat.
m/([aA]uto(matic)? ?[rR]eply)/
Testé contre:
Some other stuff....
Auto Reply
Automatic Reply
AutomaticReply
Now some similar stuff that shouldn't match (auto).