当前位置: 首页 > 面试题库 >

在任何在线测试器中都匹配但在Eclipse中不匹配的Java Regex模式

戚宏扬
2023-03-14
问题内容

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

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

我已经在许多网站(在线正则表达式测试仪)上测试了我的表情,但对他们有用,但在Eclipse中的Java项目中却无法使用。

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

形式语言:isNatural

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

混合注释:conceptType%混合注释工具:conceptType%混合标签集: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(),您要询问提供的字符串是否与您的正则表达式整体匹配。就像您^在正则表达式的开头和$结尾添加的一样。

否则,您的正则表达式可以正常运行,并返回您期望的结果。我建议在Java模式regexplanet.com上对其进行测试。您将看到何时matches()为true,何时为true
false以及每个find()返回的内容。

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



 类似资料:
  • 我目前对Java和cucumber有一个问题。通过使用硒访问网站的元素,我想使用以下短语: 该示例非常简单,通过使用Java注释,可以很好地处理每个属性名 除了以下用例:属性名包含类似于的括号。 在使用Eclipse和JUnit时,使用包含类似括号的字符串的Cucumber测试甚至不能完全识别,而只能识别开头括号之前的字符串部分。有什么想法或解决方案吗?

  • 有可能写这样的东西吗,或者我们必须回到Kotlin中的手动空检查?

  • 我有一个Groovy和Gradle项目在Eclipse开普勒有几个类和一个Spock规范。我可以从shell运行Gradle构建,它工作正常,包括Spock规范。 我现在想尝试在Eclipse中运行Spock规范,无论是否在调试器中。当我运行它时,我看到以下内容: 这是我构建的“依赖项”块。格雷德尔: 我可以在Project Explorer中看到我的Gradle依赖项具有groovy-all-2

  • 在将api从.netcore2.2升级到3.1并尝试使用带有--v3开关的autorest生成后,我得到了这个错误 警告:架构冲突:数据与“Of之一”中的任何架构都不匹配 我尝试过使用和不使用序列化AsV2 我从Autorest文档中看到此警告是因为支持的功能。 anyOf, one Of当前不支持 服务业。AddSwaggerGen我有 在哪里 [更新] 升级到Autorest 3.0.6244

  • 问题内容: 我正在尝试执行此查询- 但是我总是会出错 我认为如果用户不存在,则创建新用户。怎么了? 问题答案: 我认为,如果用户不存在,则Grant用法会创建新用户。怎么了? 在以前的mysql版本中就是这种情况。如果您想以新方式进行操作,请参见此答案。如果您想修改系统设置以使其像以前一样工作,请继续阅读。但是,请注意,这是不推荐使用的行为,因为链接文档指出: NO_AUTO_CREATE_USE

  • 问题内容: Python中有没有一种方法可以在不显式创建匹配对象的情况下访问匹配组(或美化以下示例的另一种方法)? 这是一个示例,以阐明我对此问题的动机: 遵循Perl代码 翻译成Python 看起来很尴尬(如果为其他级联,则匹配对象创建)。 问题答案: 您可以创建一个小类,该类返回调用match的布尔结果, 并 保留匹配的组以供后续检索: Python 3 print作为函数的更新,以及Pyth