When you want to match a '.' exactly, you need to remove the special meaning. [.] is one way, \. is another. Here's what happens if you don't remove the special meaning and the URL doesn't have a trailing '.':
$ perl -wE 'while (<>) { my ($x) = $_ =~ /(https?:\S+?).?\s/; say $x;
+}'
Bug found in the build. Please check check https://web.com/fluent/x/JI
+OUAQ for more details.
https://web.com/fluent/x/JIOUA
In this instance it matches any character; there's no '.' so it matches the 'Q' which you can see has been removed in the output.
The \S+? does not remove the '.', it captures up to the '.'.
I've been saying any character throughout - it actually doesn't match a newline unless you use the 's' modifier - see Modifiers in perlre.
|