使用perl中的正则表达式在两个字符串之间查找字符串

时间:2013-02-05 12:42:38

标签: perl

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

我尝试了这个,但这不起作用

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

我希望每件事都落在“String 1”和“String 2”之间

请帮忙

2 个答案:

答案 0 :(得分:7)

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

$str='String 1GIANT FISHString 2'

这将起作用

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

$wanted现在是“GIANT FISH”

dah..multiline in a file ... edit up up

好的多线,假设输入

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查找字符串

中的所有匹配项

答案 1 :(得分:0)

以下将做:

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

这两个字符串是 string string ,它们之间的任何东西都将作为数组元素进行处理。下面是我为此目的测试的示例。无论如何都可以改变你需要的两个字符串。

测试:

> cat temp
string123stringstring234string
string456stringstring789string

> perl -lne 'push @a,/string(.*?)string/g;END{print "@a"}' temp
123 234 456 789