首页 > 解决方案 > 正则表达式:为什么找不到匹配项

问题描述

我正在尝试解析包含许多部分的文档。

每个部分以:[]:空格开头,然后是 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}"

提取我想要的内容的正则表达式会是什么样子?

标签: java

解决方案


这就是你想要的?

(?<=:[]: ).*?(?=:)

查看更多:https ://regex101.com/r/jOmnSb/2

或者

:[]:.*?:

查看更多:https ://regex101.com/r/jOmnSb/3

更新 :

您可以在此处将正则表达式转换为 Java 正则表达式:https ://www.regexplanet.com/advanced/java/index.html


推荐阅读