正则表达式命名捕获组

时间:2019-10-25 18:16:11

标签: 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

我该如何实现?

1 个答案:

答案 0 :(得分:-1)

好吧,我不确定这是否是您要寻找的东西,但希望能对您有所帮助。

您可以在Java中使用类似Pattern Matcher之类的值。 Java中的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> 方法获取捕获组。

如果这是您的字符串:

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);

使用Java,您可以执行此操作(注意,由于有许多不必要的转义字符,我也简化了您的模式):

window.btoa

这会将人员ID保存在String变量中。