4

我想在文件中多次检索落在两个指定字符串之间的字符串

我试过这个,但这不起作用

/(?m)"String 1"!.*?"String2":/;

我想要所有介于“String 1”和“String 2”之间的东西

请帮忙

4

2 回答 2

9

假设您的输入字符串是这样的

$str='String 1GIANT FISHString 2'

这会起作用

($wanted)= $str =~ /String 1(.*)String 2/

$wanted现在是“巨鱼”

dah..文件中的多行...编辑即将到来

好的多行,假设输入

String 1Line oneString 2
String 1GIANT FISHString 2
String 1String2

这将得到所有的字符串

(@wanted)= $str =~ /String 1(.*)String 2/g

@wanted 有三个条目

('Line one','GIANT FISH','')

在第二个正则表达式中,g for global 查找字符串中的所有匹配项

于 2013-02-05T12:56:10.363 回答
0

下面会做:

perl -lne 'push @a,/string(.*?)string/g;END{print "@a"}'

这两个字符串是字符串字符串,它们之间的任何内容都将作为数组元素进行存储。下面是我为此目的测试过的示例。无论如何,您可以将两个字符串更改为您需要的任何字符串。

测试:

> cat temp
string123stringstring234string
string456stringstring789string

> perl -lne 'push @a,/string(.*?)string/g;END{print "@a"}' temp
123 234 456 789
于 2013-02-05T13:40:34.957 回答