regex - 正则表达式命名捕获组
问题描述
我已经成功编写了一个正则表达式模式来获取一些价值,它真的很棒,但我不知道如何命名捕获组。
这是我的字符串:
<div class="pipe-mailbody pipe-mailbody-2cccfb01-75f1-4fc0-9d5f-5f5ed8729d1b">Deal ID:<br>256<br><br>Deal pipeline ID:<br>3<br><br>Deal stage ID:<br>16<br><br>Deal contact person ID:<br>740<br><br>End:</div>
这是我的模式:
Deal\sID\:\<br\>([\d]+)\<br\>[\<\>\d\w\s]+\:\<br\>([\d]+)<br><br>Deal\sstage\sID:<br\>([\d]+)<br\>[\d\s\>\<\S]+person\sID\:\<br>([\d]+)\<br\>
谁能帮我如何命名捕获组?就像([\d]+)
这是捕获组之一,我想命名它person
我怎样才能实现它?
解决方案
好的,我不确定这是否是您正在寻找的,但希望这会有所帮助。
您可以Pattern Matcher
在 Java 中使用类似 a 的东西来获取值。Java 中的Pattern
对象允许您编译正则表达式模式。然后该Matcher
对象从某个字符串中获取该模式的所有匹配项。group
您可以使用对象的方法获取捕获组Matcher
。
如果这是你的字符串:
<div class="pipe-mailbody pipe-mailbody-2cccfb01-75f1-4fc0-9d5f-5f5ed8729d1b">Deal ID:<br>256<br><br>Deal pipeline ID:<br>3<br><br>Deal stage ID:<br>16<br><br>Deal contact person ID:<br>740<br><br>End:</div>
使用 Java,您可以这样做(作为说明,我还简化了您的模式,因为有许多不必要的转义字符):
String input = "<div class="pipe-mailbody pipe-mailbody-2cccfb01-75f1-4fc0-9d5f-5f5ed8729d1b">Deal ID:<br>256<br><br>Deal pipeline ID:<br>3<br><br>Deal stage ID:<br>16<br><br>Deal contact person ID:<br>740<br><br>End:</div>";
Pattern p = Pattern.compile("Deal\sID:<br>(\d+)<br>.+:<br>(\d+)<br><br>Deal\sstage\sID:<br>(\d+)<br>.+person\sID:<br>(\d+)<br>";
Matcher m = p.match(input);
String person = m.group(4);
这会将人员 ID 保存在字符串变量中。
推荐阅读
- javascript - 量角器在承诺后找不到相同的元素
- javascript - javascript在生成的表中更改颜色
- javascript - 如何使用 vue-chartjs 隐藏 Polararea 中的区域线
- git - 本地 Git 部署到 Azure 应用服务
- r - 如何在 R 中的多个观察值中一次仅添加一个观察值?
- python-3.x - python3 GPA计算器
- c# - 使用扩展方法检查值是否为 0
- python-3.x - 如何使用装饰器和属性有效地检查类属性的类型和范围?
- bash - Bash 脚本不起作用,使用 sed 的输出初始化变量(字符串)
- jquery - 使用 jquery 更改背景图像 css 以从 foreachloop 中找到唯一的 src