java - 使用正则表达式解析内容页面?

标签 java regex

我正在使用正则表达式编写 Java 代码来解析从 PDF 文档中提取的内容页。

在字符串中,正则表达式必须匹配:一个数字(最多三个),后跟一个(或多个)空格,后跟一个单词(或多个[单词:任意字符序列])。反之亦然:(单词、空格、数字),它们都必须在字符串中。还要考虑前导空格并且不区分大小写。

提取的内容页面可能如下所示:

Directors’ responsibilities 8

Corporate governance 9

Remuneration report 10

编号样式不一致,数字和字符串之间的空格数确实不同,因此它也可能看起来像:

01 Contents

02 Strategy and highlights

04 Chairman’s statement

我使用的正则表达式匹配任意数量的单词,后跟任意数量的空格,然后是不超过 3 位的数字:

(?i)([a-z\\s])*[0-9]{1,3}(?i)

它可以工作,但不太好,不知道我做错了什么?我希望有一种方法可以检测两种编号样式(将页码放在字符串的左侧或右侧),而不是重复正则表达式并翻转顺序。

干杯

最佳答案

如果您想匹配短语,您应该在正则表达式中包含您想要匹配的任何标点符号。 AFAIK 正则表达式中无法判断某个短语是“之前还是之后”,因此您应该翻转一个短语并在其后附加 |。大致如下:

[a-zA-Z'".,!\s]+\d{1,3}|\d{1,3}[a-zA-Z'".,!\s] +

此外,您不需要两个 (?i) 实例,因为正则表达式将应用不区分大小写,直到字符串末尾或遇到 (?-我)

关于java - 使用正则表达式解析内容页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17977340/

相关文章:

java - 如何在使用if条件的同时提高代码标准?

Java TreeMap 排序选项?

java - 如何在Java中使用浏览器调用javascript函数?

c - GNU regex.h 中 re_match 的意外结果,我错过了什么吗?

C# Regex 按分隔符分割

java - 在 Java 中删除反斜杠和换行符(一起出现)

javascript - 正则表达式在数组中查找对

java - 二叉搜索树 (BST) 中的多线程插入

java - 在 Maven2 中使用 Sigar 的问题

regex - 为什么正则表达式/[\w\W] + x/i运行起来会非常慢?