java - 将文档分为段落

标签 java regex

我想将我的文档分成段落。

首先,我使用 TIKA 从(PDF、DOC)格式中提取文本。

此后,我使用 Split() 将文本分成行。

String[]lines=handler.toString().split("\n");\\handler from TIKA that extract the whole text from document

然后我使用正则表达式提取特定信息(例如公司名称、职称、忠诚度)。

它工作得很完美,直到我有一个段落分成多行 即:

Worked in Lycatel B.O.S. (P) Ltd. India Office, Chennai as Telecom Billing Analyst from 22nd October 07 to 3rd June 08.

它将分为:

paragraph [1] :  Worked in Lycatel B.O.S. (P) Ltd. India Office, Chennai as Telecom
paragraph [2] : Billing Analyst from 22nd October 07 to 3rd June 08.

由于我为每个段落应用了 Matcher:

Matcher matcher = pattern.matcher(paragraphs[i]);

提取的数据将是错误的,因为两行应该在同一段落中。

我尝试根据 拆分文本。:

String[]lines=handler.toString().split(".");

但是,名称中包含 . 的公司也会被吐槽。例如:

Lycatel B.O.S. (P) Ltd.

如何分割文本,使段落 [i] 一直到句号 (.)?

最佳答案

您可以尝试使用 (?sm)^.*?\\.$ 但我怀疑您能否使用正则表达式获得完美的解决方案。

(?s) 是 dotall 标志,它将使 . 匹配换行符。
(?m) 是多行标志,因此 $ 将匹配行尾(而不是仅匹配字符串末尾)。
因此,使用此正则表达式,我们可以根据需要匹配尽可能多的字符(包括换行符),然后才能匹配行尾的 .

您可以试试 regex101 .

关于java - 将文档分为段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36694851/

相关文章:

regex - 是否有 R 函数来转义正则表达式字符的字符串

java - Intellij平台最小应用

php - SQL查询与表上的精确值

Python 仅重单词和数字

java - 在Java中追加多个NodeList

javascript - 如何在 JavaScript 中替换 JSON 字符串中的所有 sibling ?

regex - XSLT - 检查元素字符串中是否存在模式

java - 将Akka与现有Java项目集成的示例

java - 如何通过从第一个类调用第二个类的方法来调用第三个类的方法

Java-TimerTask-org.hibernate.HibernateException : No Session found for current thread