首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Java和regex,如何捕获不确定的(?)团体?

使用Java和regex,如何捕获不确定的(?)团体?
EN

Stack Overflow用户
提问于 2016-01-06 09:50:17
回答 2查看 59关注 0票数 1

假设我有这个正则表达式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Hello\smy\sname\sis((PETER)|(HARRY)|(EMMA))(and\smy\sage\sis(\d+))?

捕获这些名字非常简单,我只需要写这样的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(matcher.group(1).equals(matcher.group(2)) {
  String str = matcher.group(2);
}

..。

然而,就年龄而言:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(!matcher.group(5).isEmpty()) {
  int age = matcher.group(6);
}

只有当模式正在处理的文本实际上有年龄部分时才能工作,如果没有,则会弹出一个错误。那么我怎样才能捕捉到这个不确定的群体呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-06 09:59:45

如果输入字符串中不存在可选组,则group方法将返回null。因此,可能会在NullPointerException语句中抛出一个if。相反,请检查matcher.group(5)是否为null

票数 2
EN

Stack Overflow用户

发布于 2016-01-06 10:46:11

你的判断力有点奇怪。我想你只想知道名字和年龄。没有理由在每个名字周围加上括号,也没有理由让可选的第二部分成为捕获组(除非您需要看到句子的整个部分,而不仅仅是年龄本身;但年龄是唯一可以改变的部分,其余部分是一个常量字符串)。

而且,这个正则表达式不可能在名称之前或后面放置一个空格,这是很奇怪的。我想你会想要像这样的正则表达式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Hello\smy\sname\sis\s(PETER|HARRY|EMMA)(?:\sand\smy\sage\sis\s(\d+))?

请注意,第二个组已经成为一个非捕获组,方法是将?:放在开始括号之后。名称现在将是组1,如果没有提供下半部分,则组2将是null,否则它将包含年龄的数字。

例如,"Hello my name is EMMA and my age is 21"将产生:

  • 第1组:EMMA
  • 第2组:21

在Java源代码中将正则表达式放入字符串时,不要忘记将反斜杠加倍。

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

https://stackoverflow.com/questions/34639504

复制
相关文章
Java 捕获和抛出异常
Java中把非正常情况分为两种:异常(Exception)和错误(Error),其中Error错误一般是指与虚拟机相关的问题,这种错误无法恢复或不可能捕获,而对于Exception异常我们可以使用try…catch进行捕获。try…catch不允许存在单独的try块或catch块,可存在多个catch块。try块中存放业务功能代码,catch块中存放异常处理代码。Java7后支持用catch捕获多个异常,也可捕获自定义异常。对于捕获的异常一般可以使用printStackTrace()方法追踪输出至标准错误流。try…catch后可以添加finally,使用finally可以保证除系统退出外finally块中代码绝对执行。捕获异常时需要注意一定要先捕获小异常,再捕获大异常,否则小异常将无法被捕获。代码示例如下
用户7886150
2021/04/06
1.9K0
Java-捕获和抛出异常
Error和Exception 什么是异常 实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合 你的要求、你的程序要打开某个文件,这个文件可能不仔仕或省乂件信孔个对,小女次队效库的数据,数据可能是空的等。我们的程序再跑着,内存或硬盘可能满了,等等。 软件程序在运行过程中,非常可能遇到刚刚提到的这些异常问题,我们叫异常,英文是: Exception,意思是例外。这些,例外情况,或首叫异吊,忑么L找1与住/e口年心理。而不至于程序崩溃。 异常指程序运行中出现的不期而至的各种状况,
白衣少年
2022/12/26
9460
Java-捕获和抛出异常
如何使用 Sentry 捕获前端异常
英文 | https://javascript.plainenglish.io/how-to-catch-frontend-exceptions-with-sentry-34773b026ced
coder_koala
2022/11/28
1.5K0
如何使用 Sentry 捕获前端异常
如何使用异常处理机制捕获和处理请求失败的情况
在爬虫开发中,我们经常会遇到请求失败的情况,比如网络超时、连接错误、服务器拒绝等。这些情况会导致我们无法获取目标网页的内容,从而影响爬虫的效果和效率。为了解决这个问题,我们需要使用异常处理机制来捕获和处理请求失败的情况,从而提高爬虫的稳定性和稳定性。
jackcode
2023/08/03
2560
如何使用异常处理机制捕获和处理请求失败的情况
腾讯如何捕获和分析游戏崩溃
2022年MTSC大会已于12月顺利召开,腾讯互娱测试专家、腾讯 WeTest CrashSight平台技术负责人管旭东为大家带来了干货分享《腾讯如何捕获和分析游戏崩溃》,以下为本次分享的干货内容。   1. 背景简介 崩溃捕获和分析不是一个新话题,自从有软件开始,崩溃就是最严重的问题之一,崩溃率也是评估一个软件质量的重要指标。解决崩溃问题是一个刚需。从PC时代到移动时代,已经有不少崩溃捕获和分析的工具,那么腾讯游戏建设的一套新的崩溃分析系统,到底解决了哪些新问题和新挑战呢? 总结来说有三点: 1.对游戏
WeTest质量开放平台团队
2022/12/15
1.1K0
腾讯如何捕获和分析游戏崩溃
使用CatBoost进行不确定度估算:模型为何不确定以及如何估计不确定性水平
机器学习已广泛应用于一系列任务。但是,在某些高风险应用中,例如自动驾驶,医疗诊断和财务预测,错误可能导致致命的后果或重大的财务损失。在这些应用中,重要的是要检测系统何时犯错并采取更安全的措施。此外,还希望收集这些“故障场景”,对其进行标记,并教系统通过主动学习做出正确的预测。
deephub
2020/10/19
1.5K0
正则表达式(四):Java regex
Java 作为一种被广泛使用的编程语言,从 jdk-1.4 开始,标准库提供了 java.util.regex 包来支持正则表达式的使用。正则在 Java 中的使用和 python 中略有区别,主要是使用方式上稍有差异。名称上的不同足可见一斑,python 中两个核心对象是 Pattern 和 Match ,而 Java 中则是 Pattern 和 Matcher。
zhipingChen
2018/09/13
1K0
Java中的异常Exception和捕获,自定义异常
 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的。
鱼找水需要时间
2023/04/23
2K0
Java中的异常Exception和捕获,自定义异常
go 如何捕获异常
什么是异常? 不按照我们期望执行的都可以称之为异常 在Go语言中如何处理异常? 一种是程序发生异常时, 将异常信息反馈给使用者 一种是程序发生异常时, 立刻退出终止程序继续运行 将异常信息反馈给使用者
王小明_HIT
2021/07/05
1.4K0
MSVC下使用gnu regex(正则表达式C语言接口regex.h)
最近我的一个跨平台项目遇到了一个问题:需要在MSVC下调用linux下才有正则表达式C接口(regex.h)。
10km
2021/11/10
9630
在不确定列号的情况下如何使用Vlookup查找
合计之外的每一个单元格 都需要引用 除了最基础的等于=引用 我们还有一种更加万能的Vlookup+Match的方法 这样无论日期怎么变化 无论日期顺序是否能对上 我们都不用更改公式
但老师
2022/03/22
2.5K0
在不确定列号的情况下如何使用Vlookup查找
python regex replace
正则匹配-直接内容替换 s = 'dsoheoifsdfscoopaldshfowefcoopasdfjkl;' ss = s.replace('coop','###') print(s,'\n',ss) dsoheoifsdfscoopaldshfowefcoopasdfjkl; dsoheoifsdfs###aldshfowef###asdfjkl; import re regex = re.compile(r'coop') # 正则匹配替换 regex.sub('$$$$$','sdlaf
py3study
2020/01/08
2.4K0
JS的事件冒泡和捕获
各位宝宝,最近怎么样?北京的冬天来了,好冷,幸好下了一场不大不小的雪,否则对冬天真是喜欢不起来。
用户3258338
2019/12/04
2.6K0
Breakpad跨平台crash捕获和生成工具使用
breakpad是一组用于实现崩溃报告系统的客户端和服务器组件。Chromium的Breakpad是目前Native崩溃捕获中最成熟的方案。它是一套完整的工具集,从Crash的捕获到Crash的dump,都提供了相对应的工具。它记录了崩溃时的.dump文件,无论我们是在本地或者发送到服务器端,都可以用相对应的工具来解析.dump文件帮助我们查找C和C++堆栈踪迹。
杨永贞
2022/04/13
2.1K0
Breakpad跨平台crash捕获和生成工具使用
Java 类和对象,如何定义Java中的类,如何使用Java中的对象,变量
6.类与对象方法,属性的联系和区别:类是一个抽象的概念,仅仅是模板,比如:“手机”对象是一个你能够看得到,摸得着的具体实体
用户7886150
2021/01/31
6.9K0
如何使用HackRF做一个简单的IMSI捕获器
关于IMSI IMSI为国际用户识别码(International Mobile Subscriber Identity)的缩写,是用于区分蜂窝网络中不同用户的,在所在蜂窝网络中不重复的识别码。IMS
FB客服
2018/02/28
2.8K0
如何使用HackRF做一个简单的IMSI捕获器
video_replay如何捕获和回放WebRTC视频流
在数据包有丢失的环境下进行视频解码不是一件容易的事。Chrome 58中引入了一种新的视频抖动缓冲区,这导致最新版的Chrome在视频显示时一直有问题。由于该问题只在某些数据包丢失时才会出现,因此调试难度很大。为此,webrtc.org提供了一个名为video_replay的工具来复现和分析这些棘手问题。
LiveVideoStack
2021/09/02
1.8K0
video_replay如何捕获和回放WebRTC视频流
Java ByteBuffer:如何使用 flip() 和 compact()
在本文中,我将使用一个示例向您展示 JavaByteBuffer是如何工作的,以及 方法flip()和compact()它的作用。
gemron的空间
2021/07/29
5.7K1
Java ByteBuffer:如何使用 flip() 和 compact()
浅谈C++的regex库
第四届CCCC团体程序设计天梯赛结束之后,知乎热榜出现了这个问题“如何评价第四届CCCC团体程序设计天梯赛”,这里面有些回答真的看得我笑出声,比如这个简简单单的回答:“第四届CCCC字符串大赛”。
喜欢ctrl的cxk
2019/11/07
1.2K0
[Dream Big, Think Big, Achieve Big!] Regex Matching Problems 2
包子IT面试培训 助你拿到理想的offer! 有问题,问包子!Got question? Ask Baozi! 接着上一轮关于regex的博客讨论,下面我们讨论一下另一道比较常见的regular e
包子面试培训
2018/04/20
8700

相似问题

如何捕获和重用与Java regex的匹配?

12

如何使用java regex捕获带括号的组

34

如何使用regex和javascript捕获分组?

13

java regex捕获组

20

如何在java中捕获regex

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文