我想将我的文档分成段落。
首先,我使用 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/