0
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.

所以有人可以帮我设置正则表达式。

4

3 回答 3

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)

输出:

'一些文字'
'一些文字'
'一些文字'
'2.10.10.20 一些文字'
'2.10.10.20'
于 2013-04-12T14:26:44.053 回答
0

让你的正则表达式变得贪婪:

m/1[).](.*)2[).]/
于 2013-04-12T14:25:39.740 回答
0

我会写这样的东西:

 $line=~/^1[).]\s?([^\s].*[^\s])\s?2[).]$/
于 2013-04-12T17:37:52.977 回答