我想解析一个文档并提取编号列表的每个元素,例如我有这个:
1. I like to blah
and blah
2. But also to blah
and blah
我想从列表中提取每个元素,如[1]。 item1的文本,来自item2的文本]我使用了这样的正则表达式" [0-9]。*;"因为我虽然每个列表项目都以;但这并非总是如此。所以我想要一个正则表达式来提取文本,而不是以&#34 ;;"结尾。 这就是我试过的:
String regexLineNumber = "[0-9]..*;";
String[] splitted = inputData.split(regexLineNumber);
答案 0 :(得分:0)
一般情况下,我会尽量避免使用正则表达式。它们非常低效,在大多数情况下只是用作捷径。在这种情况下,您可以轻松创建BufferedReader并读取每一行以查找特定值。
之类的东西BufferedReader reader = new BufferedReader(/*instantiate here*/);
int nextNum = 2;
StringBuilder curRecord = new StringBuilder();
String line;
Collection<String> elements = new ArrayList<String>(/*Expected number ??*/);
while ((line = reader.readLine()) != null) {
if (line.trim().startsWith(nextNum + ".")) {
elements.add(curRecord.toString());
curRecord = new StringBuilder();
nextNum++;
}
curRecord.append(line);
}
if (!curRecord.trim().equals("")) {
elements.add(curRecord.toString());
}
答案 1 :(得分:0)
我建议你使用一个正则表达式,允许句子中间或末尾的数字。
(?<=[\n\r\s]*|^)(\d\.[^\d]*)
另请注意使用matches
而非findall
。