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

在perl中使用正则表达式搜索两个字符串之间的字符串,perl,Perl,我想在一个文件中多次检索介于两个指定字符串之间的字符串 我试过了,但没用 /(?m)"String 1"!.*?"String2":/; 我想要所有介于“字符串1”和“字符串2”之间的东西 请帮助假设您的输入字符串如下 $str='String 1GIANT FISHString 2' 这会奏效的 ($wanted)= $str =~ /String 1(.*)String 2/ $wanted现在是“巨鱼” dah..文件中的多行…编辑即将出现 对于多行,假设输入为 String 1Li

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

我试过了,但没用

/(?m)"String 1"!.*?"String2":/;
我想要所有介于“字符串1”和“字符串2”之间的东西


请帮助

假设您的输入字符串如下

$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
@通缉犯有三个条目

('Line one','GIANT FISH','')
在第二个正则表达式中,g for global将查找以下字符串中的所有匹配项:

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
如果第一个“字符串”在第1行,第二个“字符串”在第6行,它会给出两个“字符串”之间第1行和第6行之间的内容吗