这是我正在使用的字符串,这个字符串的显示可以重新排列在任何其他字符串中,在我的情况下,我只对获取第一个括号文本并将剩余的文本放在其在线上感兴趣.. < / p>
例如,
(test network) or test(section memory) or test(section storage)
理想输出:
test section network
or test(section memory) or test(section storage)
这是我尝试用来实现这一目标的perl代码。
while(<readline>)
{
$_ =~ s/^\(test (.*)\)(.*)/test section $1\n$2/gi;
}
输出与我正在寻找的理想输出不匹配。
答案 0 :(得分:2)
perreal的答案看起来不错,但是这里是使用ungreedyness的另一种解决方案(使用?之后的*)
s/^\(test (.*?)\)\s*(.*)/test section $1\n$2/gi
答案 1 :(得分:1)
试试这个:
s/^\(test ([^)]*)\)\s*(.*)/test section $1\n$2/gi
答案 2 :(得分:1)
你的表情过于贪婪,第一位(测试(。*))匹配最后一行)所以不能正常工作。
使表达非贪婪
s/^\(test (.*?)\)(.*)/test section $1\n$2/gi
可能也不需要g(全局)修饰符。