【发布时间】:2021-01-24 16:46:50
【问题描述】:
我正在尝试解析包含许多部分的文档。
每个部分都以:[]: 开头,后跟空格,后跟 1 个或多个字符(任何字符),然后是 : 一个空格和一个或多个字符(任何字符)。
这是一个例子:
:[]: Abet1, Abetted34: Find the usage in table under section 1-CB-45: Or more info from the related section starting with PARTIE-DU-CORPS.
:[]: Ou est-ce que tu a mal: Tu as mal aux jambes: Find usage in section 145-TT-LA-TETE.
每个部分感兴趣的标记是从:[]: 到: 第一次出现的所有内容。比如第一节,我只对提取感兴趣::[]: Abet1, Abetted34:
起初,我使用以下模式查找器从文档的每个部分中提取标记,但这会提取从该部分中第一次出现的 : 到最后一次出现的 : 的所有内容:
"\\B:\\[\\]:.*:\\B"
如果我将模式查找器更改为以下内容以将令牌从:[]: 提取到: 的第一次出现,我得到不匹配:
"\\B:\\[\\]:\\s*.:{1}"
提取我想要的内容的正则表达式是什么样的?
【问题讨论】:
-
当你说
:[]: _(下划线是一个空格)后面应该跟any字符直到第一个:,你就是在否定自己。显然,由于:也是一个字符,所以 any 字符是行不通的。 -
没错,':' 也被认为是任何字符,但我尝试了这么多变体,不知道如何从任何字符中排除 ':'。
标签: java