繁体   English   中英

Java正则表达式:忽略所有字符直到某个字符。 正则表达式

[英]Java regular expressions: ignore all characters until certain character. regex

我正在编写一个java程序,可以从网站上自动下载PDF。 我的程序读取excel文件,并为excel文件中的每个帐号下载PDF。 在浏览器中,从菜单中选择帐户,但是,菜单的格式为#storenumber - accountnumber(例如#1234 - 987654321)。 我无法访问商店号码。 一个简单的解决方案就是忽略前x个字符,但是一些商店号码的长度不同,所以这不起作用。

java是否有可能忽略 - 之前的所有字符,如果是,你可以写出这个表达式。

我正在使用它与selenium和firefox webdriver,使得单独分离和保存字符串变得更加困难。 意思是我没有内存中的字符串,它来自浏览器。

这是我的代码看起来像我有商店号码(但我不)。

new Select(driver.findElement(By.id("ctl00_main_ddlAssocAccountNumbers"))).selectByVisibleText(storeNum + " - " + accountNum);

任何其他解决方案或建议表示赞赏。

谢谢,托比尔

如果格式# storenumber - accountnumber是固定的,请使用split()

accountNum = accountNum.split(" - ")[1];

编辑:
根据您更新的帖子和评论,我认为您希望在使用Selenium的selectByVisibleText()方法时仅使用用户帐号进行部分匹配,该方法不接受任何通配符或正则表达式。

但是这里是通过使用contains()进行子字符串匹配来实现此行为的方法:

Select select = new Select(driver.findElement(
                    By.id("ctl00_main_ddlAssocAccountNumbers")));
List<WebElement> listOfOptions = select.getOptions();
for (WebElement option : listOfOptions) {
    String storeAndAcctNum = option.getText();
    if (storeAndAcctNum.contains(accountNum)) { // if sub-string matches
        select.selectByVisibleText(storeAndAcctNum); // fire select as usual
        break; // out of the loop
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM