如何一次处理多行字符串行

Vla*_*tch 5 string perl

我想从字符串中获取两个分隔符(正则表达式)之间的子字符串.我想用这个:

while (<>) {
  if (/START/../END/) {
    next if /START/ || /END/;
    print;
  }
}
Run Code Online (Sandbox Code Playgroud)

但这适用于stdin的行.我想让它在一个字符串的行上工作.怎么样?

yst*_*sth 6

只是:

my ($between) = $string =~ /START(.*?)END/s;
Run Code Online (Sandbox Code Playgroud)

或者,从字符串中读取:

use 5.010;
open my $string_fh, "<", \$string or die "Couldn't open in-memory file: $!";
while ( <$string_fh> ) {
    ...
Run Code Online (Sandbox Code Playgroud)


mam*_*ing 6

如果您的意思是要处理已包含多行的字符串,请使用split:

foreach (split(/\n/, $str)) {
  if (/START/../END/) {
    next if /START/ || /END/;
    print;
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我的lisper感觉告诉我你错过了一个闭幕式. (2认同)