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

时间:2013-06-05 16:23:04

标签: java regex character

我正在编写一个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);

感谢任何其他解决方案或建议。

谢谢, Torbir

1 个答案:

答案 0 :(得分:4)

如果格式# 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
    }
}