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.
)
所以有人可以帮我设置正则表达式。
#!/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'
让你的正则表达式变得贪婪:
m/1[).](.*)2[).]/
我会写这样的东西:
$line=~/^1[).]\s?([^\s].*[^\s])\s?2[).]$/