首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换正则表达式,带捕获

替换正则表达式,带捕获
EN

Stack Overflow用户
提问于 2010-08-25 21:19:52
回答 4查看 98关注 0票数 1

也许这是一个愚蠢的问题,但是:

我运行perl 5.8.8,我需要用"0“替换前面有数字的任何下划线。

运行:

代码语言:javascript
复制
 $var =~s /(\d)_/$10/g; 

显然不会像10美元那样被解释为...好吧..。$10,而不是"$1后面跟着0“

此外,作为运行perl5.8,我不能

代码语言:javascript
复制
$var=~s/(?<n1>\d)\_/$+{n1}0/g;

有什么想法吗?

提前感谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-25 21:22:23

就像在各种Unix shell中一样,您可以将变量名括在大括号中以消除歧义。

代码语言:javascript
复制
$var =~s /(\d)_/${1}0/g;

或者,您可以使用回溯来防止数字成为匹配的一部分:

代码语言:javascript
复制
$var =~s /(?<=\d)_/0/g; 
票数 11
EN

Stack Overflow用户

发布于 2010-08-25 21:31:17

这也是一个零宽度回溯断言的好地方:

代码语言:javascript
复制
$var =~ s/(?<=\d)_/0/g;

它查找一个数字,而不实际将该数字插入到匹配的文本中。

票数 2
EN

Stack Overflow用户

发布于 2010-08-25 21:22:09

$var =~s/(\d)_/${1}0/g;

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

https://stackoverflow.com/questions/3566216

复制
相关文章

相似问题

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