我正在尝试从多行文本中提取 2 个字符串。
postmsg="\033[0;37m
Email
Settings"
这一行在字符串的开头找到了一些匹配项并将其放入变量 inCol 中。
inCol=$(perl -e 'print $1 if $ARGV[0]=~/^(\\033\[.*?m).*$/mi; ' -- "${postmsg}")
我还想抓住我尝试过的字符串的其余部分(基本上是.*$):
inVal=$(perl -e 'print $1 if $ARGV[0]=~/^\\033\[.*?m(.*)$/mi; ' -- "${postmsg}")
如果我的输入是单行字符串,这实际上有效。如果没有,那么什么都不会出现。
.*$
匹配到行尾...尝试过\Z
但没有。一个人试过.*
,什么都没有。
尝试了各种修饰符等...这一定很简单,但我找不到答案。
更好的是,如果这可以在一行中完成。而不是运行两次比赛。
与
bash
:第一个删除最长的后缀模式
\n*
,第二个删除最短的前缀模式*\n
。当然这很简单。
最后缺少's'