Regex Perl中的特殊线匹配

时间:2014-10-13 07:40:38

标签: regex perl

输入:

gis.google.com
CAT
DOG
gis1.goole.com
CAT gis.google.com
gis.google.com DOG

我使用下面的正则表达式来匹配每行的prticlar模式。

/^[\w]+\s+[\w]+[\.][\w]+[\.][\w]+$/mg

下面是匹配

DOG
gis1.goole.com
CAT gis.google.com

但我想只匹配一行

   CAT gis.google.com

请帮我解决一下。提前谢谢!

2 个答案:

答案 0 :(得分:1)

\s+替换为\h+,其中\s将匹配空格和换行符,但\h仅匹配水平空格。这就是为什么连续的两条线(DoG和它的跟随线)匹配的原因。并且还从正则表达式中删除所有不必要的字符类。

^\w+\h+\w+\.\w+\.\w+$

DEMO

答案 1 :(得分:0)

你是如何使用正则表达式的?

它可以简化一点,但是当使用逐行处理完成时它可以工作:

while (<DATA>) {
    print if /^\w+\s+\w+[.]\w+[.]\w+$/;
}

__DATA__
gis.google.com
CAT
DOG
gis1.goole.com
CAT gis.google.com
gis.google.com DOG

输出:

CAT gis.google.com

Live Demo