perl中的正则表达式,用于获取1.和2之间的文本

时间:2013-04-12 14:15:12

标签: regex perl

1) some text 2)
1. some text 2.
1) some text 2.


1. 2.10.10.20 some text 2.
1) 2.10.10.20 2)

我希望获得1)和2)之间的文本或1.或2.,

这是我写的

1[).](.*?)2[).]

所以这里的perl $ 1会给我两段文字,但这会在第三场比赛中失败(1. 2.10.10.20 some text 2.

也可以帮助我设置正则表达式。

3 个答案:

答案 0 :(得分:2)

#!/usr/bin/env perl

use 5.012;
use strict;
use warnings;

while (my $line = <DATA>) {
    if ($line =~ m{ 1[.)] \s (.+?) \s 2[.)] }x) {
        say qq{'$1'};
    }
}

__DATA__
1) some text 2)
1. some text 2.
1) some text 2.


1. 2.10.10.20 some text 2.
1) 2.10.10.20 2)

输出:

'some text'
'some text'
'some text'
'2.10.10.20 some text'
'2.10.10.20'

答案 1 :(得分:0)

让你的正则表达式贪婪:

m/1[).](.*)2[).]/

答案 2 :(得分:0)

我会写一些类似的东西:

 $line=~/^1[).]\s?([^\s].*[^\s])\s?2[).]$/