首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >行锚的Perl regex启动失败

行锚的Perl regex启动失败
EN

Stack Overflow用户
提问于 2015-09-11 15:30:01
回答 2查看 2.1K关注 0票数 0

我想更改示例第二行中的“this”,但它没有发生。非常感谢你给我一个错误的想法。

代码语言:javascript
复制
echo "not this but
this one" > test.txt
perl -0777 -i -pe 's/^this/rhinoceros/igs' test.txt
cat test.txt
not this but
this one
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-11 15:36:41

您在替换时使用了所有错误的修饰符。您可能只想做一个更改,因此/g是不必要的;要匹配的文本完全是this,因此/i是不必要的,而且您的模式中没有点.字符,所以/s什么都不做。

您需要的是一个/m (多行)修饰符,这样^就可以匹配字符串中间行的开头和字符串开头的行。

这应该对你有用

代码语言:javascript
复制
perl -0777 -i -pe 's/^this/rhinoceros/m' test.txt
票数 5
EN

Stack Overflow用户

发布于 2015-09-11 15:34:36

您使用的是/s标志,实际上您需要/m标志。

代码语言:javascript
复制
perl -0777 -i -pe 's/^this/rhinoceros/igm' test.txt

s将整个字符串视为一行,而m则在多行上进行匹配。

编辑:查看http://perldoc.perl.org/perlre.html获得关于@ThisSuitIsBlackNot评论的更详细的sm修饰符。出于实际目的,s“将字符串视为单行”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32527058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档