如何将{1,0}与正则表达式匹配?

Mas*_*ask 2 regex

? or `{0,1}` 
Run Code Online (Sandbox Code Playgroud)

必要时会匹配一些模式,但现在我想反向做.

说,如果有必要,请不要匹配.

有人得到我的意思有解决方案吗?

小智 7

只要把问号后{0,1},如{0,1}?,它会倾向于匹配零次数不超过一次.问号使它"非贪婪",这意味着它不会尽可能地吞咽.

测试(在Perl中):

#! perl
use warnings;
use strict;

my $string = "abcdefghijk";

if ($string =~ /(..{0,1}?)/) {
    print "$1\n";
}
Run Code Online (Sandbox Code Playgroud)

打印

a

你也可以??代替使用{0,1}?.

  • 这就是`?`和`{0,1}`默认*做*.除非另有说明,否则正则表达式是贪婪的.`?`和`{0,1}`匹配if*possible*,而不是*必要*(如你所说). (3认同)