regex - perl shell脚本转义替换模式不起作用
问题描述
我有这个不工作的问题。
echo "aabbccdd" | perl -w -pe "s/(?<Naa>aa)/\g{Naa}-$1/;"
它输出
无法识别的转义 \g 在 -e 第 1 行通过。
我的 perl 版本是“subversion 4 (v5.18.4)”
我的 bash 版本是“版本 4.2.53(1)-release (x86_64-redhat-linux-gnu)”
我的操作系统发行版是“Fedora release 20 (Heisenbug)”
我的语言环境是“C”
怎么解决 ?
更新:
如何按数字 1 显示相同的标记组?
解决方案
您只能在正则表达式的匹配\g{name}
端使用(or \k<name>
) 。您可以在替换端使用:$+{name}
echo "aabbaaccdd" | perl -w -pe "s/(?<Naa>aa)(?=bb\g{Naa}).*/$+{Naa}/;"
打印出来
aa
这是因为命名的捕获被放置在哈希表中%+
。
编辑:在我写这篇文章的时候,Wiktor Stribiżew 在问题的评论中击败了我。
推荐阅读
- protractor - 在 VS 代码编辑器中编写时,在 Visual Studio 2017 中运行 Protractor 的自动化脚本
- python - tbselenium tor 浏览器无法在 ubuntu 上获取 url
- c - x = (char *)&a 的作用是什么,它有什么作用?
- javascript - 如何使用jquery在输入字段后删除/更改/替换文本
- sas - SAS to Excel DDE 生成测试但不输出数据
- elasticsearch - Elasticsearch 的 search_after 不适用于日期
- angular - 使用打字稿Angular 6从表单上的选择输入中获取值
- xslt - xslt - 如何增加每个节点的计数器
- linux - 使用 sendmail 脚本时获取空文件作为附件
- java - Java线程中的内存顺序和可见性