gpt4 book ai didi

Java 正则表达式模式在任何在线测试器中匹配但在 Eclipse 中不匹配

转载 作者:行者123 更新时间:2023-11-30 08:07:18 26 4
gpt4 key购买 nike

我有一段代码无法在安装了 Java 1.7 的 Eclipse 上运行。

我想使用一个正则表达式来匹配并从每个匹配中提取 2 个字符串,因此我为此使用了 2 个组。

我已经在许多网站(在线正则表达式测试器)中测试了我的表达式,它对他们有效,但它不适用于我在 Eclipse 中的 Java 项目。

源字符串看起来像以下任何一个:

正式语言:isNatural

注释工具:isHuman%Human 注释器:isHuman

混合注释:conceptType%Hybrid 注释工具:conceptType%Hybrid 标签集:conceptType

...等等。

我想为每个匹配提取“:”之前的第一个单词和后面的单词。

我使用的正则表达式是这样的:

(\w*\s*\w+):(\s+\w+)%{0,1}

以及代码片段:

String attribute = parts[0];                            
Pattern pattern = Pattern.compile("(\\w*\\s*\\w+):(\\s+\\w+)%{0,1}");
Matcher matcher = pattern.matcher(attribute);
OWLDataProperty dataProp = null;

if (matcher.matches()){
while (matcher.find()){
String name = null, domain = null;

domain = matcher.group(1);
name = matcher.group(2);

dataProp = factory.getOWLDataProperty(":"+Introspector.decapitalize(name), pm);

OWLClass domainClass = factory.getOWLClass(":"+domain.replaceAll(" ", ""), pm);
OWLDataPropertyDomainAxiom domainAxiom = factory.getOWLDataPropertyDomainAxiom(dataProp, domainClass);
manager.applyChange(new AddAxiom(ontology, domainAxiom));
}

你们中有人知道为什么它不起作用吗?

非常感谢。

最佳答案

当使用matches()时,您会询问您提供的字符串是否与整个正则表达式匹配。就好像您在正则表达式的开头添加了 ^ 并在末尾添加了 $

您的正则表达式在其他方面都很好,并且返回您所期望的结果。我建议测试它regexplanet.com, Java mode 。您将看到 matches() 何时为 true,何时 false,以及每个 find() 将返回什么。

要解决您的问题,我认为您只需要删除 if (matcher.matches()) 条件即可。

关于Java 正则表达式模式在任何在线测试器中匹配但在 Eclipse 中不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30912978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com