首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么当数字以0结尾时,我的正则表达式失败?

为什么当数字以0结尾时,我的正则表达式失败?
EN

Stack Overflow用户
提问于 2010-04-17 16:53:55
回答 5查看 198关注 0票数 1

这是一个非常基本的正则表达式问题,但由于我似乎不能弄清楚为什么在某些情况下匹配会失败,所以我想发布它,看看是否有人能指出我遗漏了什么。

我正在尝试从以下形式的字符串中提取两组数字:

代码语言:javascript
运行
AI代码解释
复制
12309123098_102938120938120938
1321312_103810312032123
123123123_10983094854905490
38293827_1293120938129308

我使用以下代码来处理每个字符串:

代码语言:javascript
运行
AI代码解释
复制
if($string && $string =~ /^(\d)+_(\d)+$/) {
    if(IsInteger($1) && IsInteger($2)) { print "success ('$1','$2')"; }
    else { print "fail"; }
}

其中,IsInterger()函数如下所示:

代码语言:javascript
运行
AI代码解释
复制
sub IsInteger {
    my $integer = shift;
    if($integer && $integer =~ /^\d+$/) { return 1; }
    return;
}

此函数似乎在大多数情况下都有效,但在以下情况下由于某些原因而失败:

代码语言:javascript
运行
AI代码解释
复制
1287123437_1268098784380
1287123437_1267589971660

有什么想法可以解释为什么这些失败了,而其他成功了呢?提前感谢您的帮助!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-17 17:18:18

这是对独角兽成瘾者和ZyX的回答的补充:你想匹配什么?

如果你正在尝试匹配'_‘左右的序列,独角兽成瘾者是正确的,并且你的正则表达式需要是^(\d+)_(\d+)$。此外,您还可以完全摆脱第一个限定符和‘IsIntrger()’函数-您已经知道它是一个整数-它匹配(\d+)

代码语言:javascript
运行
AI代码解释
复制
if ($string =~ /^(\d+)_(\d+)$/) {
    print "success ('$1','$2')";
} else {
    print "fail\n";
}

如果您试图匹配每一项中的最后一位数字,并且想知道为什么失败,那么这是第一次在IsInteger() ( if($intger && )中进行检查。无论如何,它都是多余的(你知道它是一个整数),并且在0上失败,因为,正如ZyX所指出的-它的计算结果为false。

不过,同样的事情也适用:

代码语言:javascript
运行
AI代码解释
复制
if ($string =~ /^(\d)+_(\d)+$/) {
    print "success ('$1','$2')";
} else {
    print "fail\n";
}

在给定输入12309123098_102938120938120938的情况下,这将输出success ('8','8')

票数 3
EN

Stack Overflow用户

发布于 2010-04-17 17:03:09

因为在第二个字符串的末尾有0,所以(\d)+只在$N变量中放入最后一个匹配项,string "0"等同于false。

票数 3
EN

Stack Overflow用户

发布于 2010-04-17 17:38:21

如果不确定,请检查您的正则表达式实际捕获的内容。

代码语言:javascript
运行
AI代码解释
复制
use strict;
use warnings;

my @data = (
    '1321312_103810312032123',
    '123123123_10983094854905490',
);

for my $s (@data){
    print "\$1=$1 \$2=$2\n" if $s =~ /^(\d)+_(\d)+$/;
    # Output:
    # $1=2 $2=3
    # $1=3 $2=0
}

您可能打算采用这两种方法中的第二种方法。

代码语言:javascript
运行
AI代码解释
复制
(\d)+  # Repeat a regex group 1+ times,
       # capturing only the last instance.

(\d+)  # Capture 1+ digits.

此外,无论是在主循环中还是在IsInteger中(考虑到主循环中的初始正则表达式,这似乎都是不必要的),您要测试的是真值,而不是更具体的东西,比如definedlength。例如,零是一个有效的整数,但却是假的。

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

https://stackoverflow.com/questions/2659201

复制
相关文章
angular4实战(4)ngrx
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j_bleach/article/details/78161765
j_bleach
2019/07/02
1.2K0
angular4实战(4)ngrx
Angular 4 组件通信
最近在项目上,组件跟组件之间可能是父子关系,兄弟关系,爷孙关系都有。。。。。我也找找了很多关于组件之间通讯的方法,不同的方法应用在不同的场景,根据功能需求选择组件之间最适合的通讯方式。下面我就总结一下关于组件通讯的N多种方法。
半指温柔乐
2020/06/10
9300
忘记 Angular 3:Google 将发布 Angular 4
2016年11月,当Google详细说明将在Angular 2到来的短短6个月后发布Angular 3的计划时,每个人都大吃一惊。现在,事实证明终究“No Angular 3”发布。相反,Google将于2017年3月正式推出其流行的JavaScript框架的第4版。
疯狂的技术宅
2019/03/28
1K0
忘记 Angular 3:Google 将发布 Angular 4
angular4实战(1) angular-cli
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j_bleach/article/details/78077403
j_bleach
2019/07/02
6920
angular4实战(1) angular-cli
(4)Angular的开发
angular框架,库,是一款非常优秀的前端高级JS框架,有了这个框架就可以轻松构建SPA应用程序,通过指令宽展了HTML,通过表达式绑定数据到HTML。
达达前端
2019/07/22
3.1K0
Angular4 实战开发
本文介绍了Angular4实战开发系列文章,该系列文章以用为主,结合通俗易懂的实例来让大家理解常用的知识点。主要内容包括:Angular CLI、创建组件、使用CSS美化组件、属性和事件绑定、组件通讯、创建指令、创建服务、创建管道、创建表单和路由导航、动画。通过本系列文章,用户可以快速掌握Angular4的实战开发技能。
IMWeb前端团队
2018/01/08
7270
Angular企业级开发(4)-ngResource和REST介绍
一、RESTful介绍 RESTful维基百科 REST(表征性状态传输,Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出
八哥
2018/01/18
8560
Angular企业级开发(4)-ngResource和REST介绍
高级 Angular 组件模式 (4)
命名冲突不仅存在于指令的选择器之间,同时也会存在于指令的Inputs和Outputs属性,当这些属性名一样时,Angular并不会进行提示,它会按原本的逻辑正常工作。这种情况有时候是我们希望看到的,有些时候却不是。
littlelyon
2018/10/19
7890
Angular4 实战开发
《Angular 实战系列》目前处于章节不定,内容不定阶段,这一系列文章不会长篇大论的讲解概念,而是以用为主,结合通俗易懂的实例来让大家理解常用的知识点。
IMWeb前端团队
2019/12/06
5580
Angular4记账webApp练手项目之一(利用angular-cli构建Angular4.X项目)
官方文档 :https://github.com/angular/angular-cli
易兒善
2018/08/21
1.1K0
Angular4记账webApp练手项目之一(利用angular-cli构建Angular4.X项目)
SPA网站SEO优化PhantomJs
随着web2.0的兴起,ajax的时代已经成为了事实,更如今Knockout,backbone, angular,ember前端MDV(model driver view)框架强势而来,Single Page Application已经为大家所熟悉了。如今常见的SPA程序,restfull和前端MDV之类的框架能够实实在在的减少我们的代码开发量,让我更多的注意力关注在真正的业务逻辑上。在众多前端MDV框架从博客中可以看出来笔者还是钟爱于angular,然而服务端平台的选择的话:在.net平台笔者会首选webapi+oData,jvm平台spring restfull。
javascript.shop
2019/09/04
2K0
SPA网站SEO优化PhantomJs
Angular4记账webApp练手项目之二(在angular4项目中使用Angular WeUI)
安装后还需要引用weui 样式以及我们的font-awesome图标苦,在我们项目index.html中引用
易兒善
2018/08/21
2.2K0
Angular4记账webApp练手项目之二(在angular4项目中使用Angular WeUI)
4、Angular JS 学习笔记 – 模块 [翻译中]
你可以认为一个模块就是一个app的不同部分,controllers,services,filters,directives,等。
前Thoughtworks-杨焱
2021/12/08
9660
angular4实战(2) router
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j_bleach/article/details/78077844
j_bleach
2019/07/02
5750
angular4实战(2) router
ionic4 -- angular 跳转页面
ionic4 与前辈们最大的不同就是通过angular引入了route,这样每次跳转的时候只需要直接跳转对应的路由地址就可以了,给了路由器上的解耦,也解决了原来的RXjs与Events的子页面反复跳转重复添加监听问题【挖坑,具体操作等后面进一步深入研究】。通过翻阅源码,我们看到:
stormKid
2018/09/12
2.9K0
ionic4 -- angular 跳转页面
Angular4记账webApp练手项目之五(Angular4项目中创建service(服务)和使用http模块)
ng给我们创建的模块account.service.ts,内容如下。 有关@Injectable和@Component,都是angular中的关键字或者关键注解。通过注解来表明js文件的类型,以方便angular框架进行调用。 @Component表示该js文件所导出的类是组件。 @Injectable表示该js文件所导出的文件是服务,而服务是可以通过注入来创建的。 服务的注入,是angular中用来剥离controller和业务逻辑的方式。
易兒善
2018/08/21
1.3K0
Angular4记账webApp练手项目之五(Angular4项目中创建service(服务)和使用http模块)
Angular2 VS Angular4 深度对比:特性、性能
在Web应用开发领域,Angular被认为是最好的开源JavaScript框架之一。
葡萄城控件
2022/05/09
8.8K0
Angular2 VS Angular4 深度对比:特性、性能
angular4 Flex Layout开发实践
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j_bleach/article/details/77513213
j_bleach
2019/07/02
1.1K0
angular4 Flex Layout开发实践
Angular Input和Output
Input 是属性装饰器,用来定义组件内的输入属性。在实际应用场合,我们主要用来实现父组件向子组件传递数据。Angular 应用是由各式各样的组件组成,当应用启动时,Angular 会从根组件开始启动,并解析整棵组件树,数据由上而下流下下一级子组件。
阿宝哥
2019/11/06
2.4K0
点击加载更多

相似问题

在hashbang之前使用nginx、angular.js和prerender.io

20

将Angular .htaccess与Prerender.io .htaccess合并

123

Angular4,材料和Angular4

23

基于HTML Unit和prerender.io的Angular搜索引擎优化

11

Beego和Angular 4

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档