? or `{0,1}`
在必要时会匹配某种模式,但现在我想反过来。
如果需要,请说不匹配。
任何人都明白我的意思有解决方案吗?
答案 0 :(得分:7)
只需在{0,1}
之后添加一个问号,就像{0,1}?
一样,它会更喜欢匹配零而不是一次。问号使它“非贪婪”,这意味着它不会尽可能地吞下去。
测试(在Perl中):
#! perl
use warnings;
use strict;
my $string = "abcdefghijk";
if ($string =~ /(..{0,1}?)/) {
print "$1\n";
}
打印
a
您也可以使用??
代替{0,1}?
。
答案 1 :(得分:1)
?
或{0,1}
会在必要时匹配某些模式,但现在我想反向执行。
不,?
或{0,1}
会匹配某些模式,如果可能。默认情况下,正则表达式是贪婪的。
要在必要时使它们匹配,它们需要看起来像??
或{0,1}?
。
似乎你已经拥有了你想要的东西。
如果需要,请说不匹配。
说“不匹配”通常是正则表达式中的困难和不可能之间的事情。除非你想出一个你需要做的真实样本,否则很难回答。
答案 2 :(得分:0)
那么,你需要“两个或更多”?然后试一试:{2,}
答案 3 :(得分:0)
听起来像你正在寻找一个消极的主张。其语法通常为(?!...)
例如,A(?!B)C
将匹配A然后匹配C,但如果C的开头与B匹配则不会。