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

时间:2009-11-05 09:52:38

标签: regex

? or `{0,1}` 

在必要时会匹配某种模式,但现在我想反过来。

如果需要,请说不匹配

任何人都明白我的意思有解决方案吗?

4 个答案:

答案 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匹配则不会。