Je vais avoir du mal à déterminer quels caractères doit être échappé lors de l'utilisation de qr Perl construction {}Quels caractères dois-je échapper dans une regex pré-compilée Perl?
je tente de créer une regex précompilés plusieurs lignes pour le texte qui contient une myriade de personnages normalement évadés (# *.>: []) et contient également une autre regex précompilée. De plus, je dois correspondre aussi strictement que possible à des fins de test.
my $output = q{# using defaults found in .config
*
*
Options:
1. opt1
> 2. opt2
choice[1-2?]: };
my $sc = qr{(>|\s)}smx;
my $re = qr{# using defaults found in .config
*
*
Options:
$sc 1. opt1
$sc 2. opt2
choice[1-2?]: }mx;
if ($output =~ $re) {
print "OK!\n";
}
else {
print "D'oh!\n";
}
Erreur:
Quantifier follows nothing in regex; marked by <-- HERE in m/# using defaults found in .config
* <-- HERE
*
Options:
(?msx-i:(>|\s)) 1. opt1
(?msx-i:(>|\s)) 2. opt2
choice[1-2?]:/at ./so.pl line 14.
tentative d'échapper aux résultats des astérisques dans un match échoué (D'oh sortie). Tenter d'échapper à d'autres caractères embêtants entraîne également une correspondance ratée. Je pourrais continuer à essayer différents combos de quoi échapper, mais il y a beaucoup de variations ici et j'espère que quelqu'un pourrait fournir un aperçu.
Argh! Ma compréhension de ce que 's' et 'x' faisait était inverse de la réalité. D'où le 's' manquant de $ re. Mais oui, je blâme PbP ici aussi. :) –
Le livre explique ce que les options font et pourquoi les utiliser ... vous ne pouvez pas vraiment blâmer le livre pour cela. :) –
Je peux blâmer le livre. Il est dit "Toujours utiliser le drapeau/x" (p 236) et "Toujours utiliser le drapeau/m" (p 237).La recommandation de "Toujours" est erronée. –