2015-06-16 78 views
1

它容易得到一个正则表达式,让你所有的“COM/NET /组织”否定词组? - 正则表达式(正则表达式)

这就是:

^.+(com|org|net)$ 

,但我试图找到没有一个COM/NET /组织的所有域

我似乎无法找到一个方法来否定词组COM/NET /组织

下面是样本字符串:

piquetraveldesign.com 
rigall.com.au 
hunt4me.co.uk 
cialis-without-prescription.us 
filipinocommunityseattle.org 
mortgageplanningblog.com 
mental-health-training.net 
final-fantasy-xiv-gil.com 
uoblife.com.sg 
unashamedandassociates.biz 
heaonlineshop.com 

任何想法?

回答

0

您可以使用负向预测声明。

^(?!.*(?:com|net|org)$).+$ 
+0

这让人惊叹。只是好奇,为什么没有。+在最后? – Moses

+0

因为'(?!...)'是一个只在给定位置匹配的零宽度断言。 – hwnd

0

由于它的固定长度,你可以使用一个 lookbehind断言。
如果所有行都在单个字符串中,则必须设置多行模式
因此$表示行结束,而不是字符串结束。

# .+(?<!\.(?:com|org|net))$ 

.+ 
(?<! 
     \. 
     (?: com | org | net) 
) 
$