The broken words are expressed by "...", which means to "one or more words are missing". I would like to compare these strings so that perl outputs a message when they do not match. This is useful to spot unexpected variations. In this case, only the last string should not match the others. My idea is to substitute "..." with ".+", and so far I got this:$var[0] = "Gallia est omnis divisa in partes tres"; $var[1] = "Gallia est omnis divisa in ..."; $var[2] = "Gallia est omnis ..."; $var[3] = "Gallia"; $var[4] = "... omnis divisa in ..."; $var[5] = "Gallia est ... tres"; $var[6] = "Gallia ... partes tres"; $var[7] = "Gallia est ... partes tres"; $var[8] = "Gallia ... divisa ... tres"; $var[9] = "... tres"; $var[10] = "quattuor";
which prints:for ($i=0;$i<=$#var;$i++) { $var[$i] =~ s/\.\.\./\.\+/g; for ($j=$i+1;$j<=$#var;$j++) { $var[$j] =~ s/\.\.\./\.\+/g; if ($var[$i] !~ m/$var[$j]/) { print "$i-$j:\t[$var[$i]] and [$var[$j]] DO NOT MATCH!\n"; } } }
0 - 10 DO NOT MATCH!
1 - 5 DO NOT MATCH!
1 - 6 DO NOT MATCH!
1 - 7 DO NOT MATCH!
1 - 8 DO NOT MATCH!
1 - 9 DO NOT MATCH!
1 - 10 DO NOT MATCH!\
2 - 4 DO NOT MATCH!
2 - 5 DO NOT MATCH!
2 - 6 DO NOT MATCH!
2 - 7 DO NOT MATCH!
2 - 8 DO NOT MATCH!
2 - 9 DO NOT MATCH!
2 - 10 DO NOT MATCH!
3 - 4 DO NOT MATCH!
3 - 5 DO NOT MATCH!
3 - 6 DO NOT MATCH!
3 - 7 DO NOT MATCH!
3 - 8 DO NOT MATCH!
3 - 9 DO NOT MATCH!
3 - 10 DO NOT MATCH!
4 - 5 DO NOT MATCH!
4 - 6 DO NOT MATCH!
4 - 7 DO NOT MATCH!
4 - 8 DO NOT MATCH!
4 - 9 DO NOT MATCH!
4 - 10 DO NOT MATCH!
5 - 6 DO NOT MATCH!
5 - 7 DO NOT MATCH!
5 - 8 DO NOT MATCH!
5 - 10 DO NOT MATCH!
6 - 7 DO NOT MATCH!
6 - 8 DO NOT MATCH!
6 - 10 DO NOT MATCH!
7 - 8 DO NOT MATCH!
7 - 10 DO NOT MATCH!
8 - 10 DO NOT MATCH!
9 - 10 DO NOT MATCH!
In reply to Using special characters in left part of a regex match? by shamat
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |