Non-greedy matching for votestrings. next
authorThomas Hochstein <thh@thh.name>
Tue, 29 Mar 2022 20:56:47 +0000 (22:56 +0200)
committerThomas Hochstein <thh@thh.name>
Tue, 29 Mar 2022 20:56:47 +0000 (22:56 +0200)
A single choice on a ballot has this format:

 #1   [            ]  This or that

The regexp in uvvote.pl's process_vote() will
match and extract what's beetwen "[" and "]".
But if "This or that" contains a "]", the
match will be too greedy:

 #1   [            ]  This [or that]
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <- match

Fix that by using a non-greedy operator.

Signed-off-by: Thomas Hochstein <thh@thh.name>
uvvote.pl

index c101f1f..a151250 100755 (executable)
--- a/uvvote.pl
+++ b/uvvote.pl
@@ -271,7 +271,7 @@ sub process_vote {
     }
 
     # this matches on a single appearance:
     }
 
     # this matches on a single appearance:
-    if ($$body =~ /#$votenum\W*?\[(.+)\]/) {
+    if ($$body =~ /#$votenum\W*?\[(.+?)\]/) {
       # one or more vote strings were found
       $onevote ||= 1; # set $onevote to 1 if it was 0
       my $votestring = $1;
       # one or more vote strings were found
       $onevote ||= 1; # set $onevote to 1 if it was 0
       my $votestring = $1;
This page took 0.010859 seconds and 4 git commands to generate.