首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这一行Perl是没有意义的吗?s/^(\d+)\b/$1/sg

这一行Perl是没有意义的吗?s/^(\d+)\b/$1/sg
EN

Stack Overflow用户
提问于 2012-02-08 23:28:04
回答 2查看 2.5K关注 0票数 8

这一行Perl真的能做点什么吗?

代码语言:javascript
运行
复制
$variable =~ s/^(\d+)\b/$1/sg;

我能想到的唯一一件事就是$1$&可能会被重用,但紧随其后的是。

代码语言:javascript
运行
复制
$variable =~ s/\D//sg;

将这两行放在一起,第一行是无意义的和可删除的吗?看起来是这样的,但我在这个老程序中已经看过很多次了,所以我想确认一下。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-08 23:46:15

代码语言:javascript
运行
复制
$variable =~ s/^(\d+)\b/$1/sg;

  • 开头的锚定^使/g修饰符毫无用处。
  • 字符串中缺少通配符.使/s修饰符毫无用处,因为它还用于使.也匹配捕获组之外的零宽度断言,并且此替换根本不会更改变量。

这个正则表达式做的唯一一件事就是将数字捕获到$1中,如果它们被找到的话。

随后的正则表达式

代码语言:javascript
运行
复制
$variable =~ s/\D//sg;

将删除所有非数字,使变量只有一个长数字。如果想要分离第一部分(与第一个正则表达式匹配),唯一的方法是从第一个正则表达式访问$1

然而,这种情况下的第一个正则表达式应该简单地写成:

代码语言:javascript
运行
复制
$variable =~ /^(\d+)\b/;

如果要使用捕获:

代码语言:javascript
运行
复制
my ($num) = $variable =~ /^(\d+)\b/;
票数 12
EN

Stack Overflow用户

发布于 2012-02-09 00:01:30

是否在使用“污点模式”?(使用-T选项调用脚本。)

也许它是用来净化(即不污染)用户输入的。

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

https://stackoverflow.com/questions/9196289

复制
相关文章

相似问题

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