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

问题描述:

? or `{0,1}` 

匹配某些模式,如果有必要,但现在我想反过来做。如何将{1,0}与正则表达式匹配?

说,如果有必要不匹配

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

+1

我已经回答了下面的问题,但似乎每个人都误解了你想要的。也许你可以举一个你希望如何匹配的例子。 – 2009-11-05 10:20:14

+3

@Mask:你真的需要重新陈述这个问题。这是非常模糊和难以回答的。尝试添加你想要做的样本。 – Tomalak 2009-11-05 10:24:36

只需在{0,1}之后加上一个问号,如{0,1}?,它会优选匹配零次一次。问号使它“不贪婪”,这意味着它不会尽可能吞下。

测试(在Perl):

#! perl 
use warnings; 
use strict; 

my $string = "abcdefghijk"; 

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

打印

 
a 

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

+0

@Lukas:谢谢你对我的回答的补充。 – 2009-11-05 10:01:07

+0

但我想要的是让它变得贪婪,如果可能就匹配。 – Mask 2009-11-05 10:09:03

+0

我希望它比零时间更喜欢匹配。 – Mask 2009-11-05 10:12:39

那么,你需要“两个或更多”?然后试试这个:{2,}

+0

不,你错过了我的观点。 – Mask 2009-11-05 09:56:10

这听起来像你在寻找一个负面的断言。对于语法通常是(?!...)

例如,A(?!B)C将匹配然后是C,但如果C的开头匹配B.

?{0,1}必要时将匹配一些模式,但现在我想要反向地做。如果可能

没有,?{0,1}将匹配某种模式。正则表达式默认情况下是贪婪的。

要使它们匹配必要,它们需要看起来像??{0,1}?

似乎你已经有了你想要的东西。

说,不匹配如果有必要。

说“不匹配”通常是困难和不可能的正则表达式之间的东西。除非你想出一个你需要做的真实样本,否则这很难回答。