0

我想了很久。有没有办法在没有冗余拆分的情况下正确拆分两个关键字标识符?例如,我们有文本:

String text = "ASD WORD-BE HERE YUP";

我们要提取“BE”。所以我们会做两次拆分。

String extractedWord = text.split(" ")[1].split("-")[1];

在不知道确切的正则表达式的情况下,有没有更好的方法来做到这一点?我正在开发一个读取pdf的解析器,我想我的正则表达式可能是一个日期,但有一个未格式化的日期,所以我必须专门寻找“MONTH - MONTH, DAY, YEAR”,这有点难设置正则表达式。谢谢!

4

1 回答 1

1

一种选择是正则表达式捕获组。不幸的是,它最终变成了更多代码:

var pattern = Pattern.compile("-(.*?)\\s");
var matcher = pattern.matcher("ASD WORD-BE HERE YUP");
var extracted = matcher.find() ? matcher.group(1) : null;

assert extracted.equals("BE");

您的代码的一个潜在问题是您总是假设输入是有效的(这对于您的用例可能没问题),即您从不检查 String#split 返回的数组的长度,然后再对它们进行索引。

于 2020-01-01T21:12:40.717 回答