gpt4 book ai didi

java - 常规Exp : Matcher: how to get last occurence in the group

转载 作者:行者123 更新时间:2023-11-30 02:35:44 24 4
gpt4 key购买 nike

我有需要捕获身份验证代码的表结构。我使用了正则表达式和匹配器方法 find()。但是,会生成多个代码,我需要获取最近的一个。我尝试了下面的代码,它仅捕获第一次出现的情况。请让我知道如何捕获代码的最后一次出现。

代码:

String mobilenumber="00955555555555"; 

//Date validate = null;

{
List<WebElement> rows = driver1.findElements(By.cssSelector("tr"));
for (WebElement row : rows)
{
String text = row.getText();
if (text.contains(mobilenumber))
{
String regex = ": (\\d+)"; //Your authentication code is
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);

if (matcher.find())
{

valueis = matcher.group(1);
System.out.println(valueis);

最佳答案

还有更多方法(也许并不奇怪)可以实现这一点。这里有一些。

一,继续匹配,直到没有更多匹配为止。最后一场比赛是——最后一场比赛。

        String valueis = null;
while (matcher.find()) {
valueis = matcher.group(1);
}
System.out.println(valueis);

两个,或者在正则表达式中首先匹配冒号和数字之前尽可能多的字符串:

        String regex = ".*: (\\d+)"; // Your authentication code is

*量词是贪婪的,这将首先匹配最后一个数字。对于后者的简单测试,请尝试:

    String regex = ".*: (\\d+)";
Pattern pattern = Pattern.compile(regex);

String text = "00955555555555 auth: 44; auth: 77 end";
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
String valueis = matcher.group(1);
System.out.println(valueis);
}

这会打印 77 .

从讨论中我了解到,每个表行( <tr> 元素)中只有一个身份验证代码(一个正则表达式匹配),但同一个手机号码可能出现在多个表行中,如果是这样,您想要最后(最近)出现的情况。这看起来不是正则表达式的问题,而是程序逻辑的问题。这是我解决这个问题的尝试:

    String regex = ": (\\d+)"; // Your authentication code is
Pattern pattern = Pattern.compile(regex);

String valueis = null;
for (WebElement row : rows) {
String text = row.getText();
if (text.contains(mobilenumber)) {
Matcher matcher = pattern.matcher(text);

if (matcher.find()) {
valueis = matcher.group(1);
}
}
}
if (valueis == null) {
System.out.println("Not found");
} else {
System.out.println("Last occurrence was " + valueis);
}

关于java - 常规Exp : Matcher: how to get last occurence in the group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43156393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com