【问题标题】:Groovy - Regex match the string with last char numbersGroovy - 正则表达式将字符串与最后一个字符数字匹配
【发布时间】:2019-07-30 08:26:06
【问题描述】:

我的输入字符串

pdfe_bc
pdfe_orSE
pdfe_oo1
pdfe_och1
pdfe_oo2
pdfe_och2
pdfe_oo10
pdfe_och10 and so...

我想收集以下格式的字符串并存储在单独的 ArrayList 中。

pdfe_oo1
pdfe_oo2
pdfe_oo10

我正在使用下面的正则表达式来查找和匹配字符串

Pattern p = Pattern.compile("[pdfe_oo]\\d+")

我的完整代码是

for ( WebElement e : allIDs ) {
    String iD = e.getAttribute("id")
    println iD
    Matcher m = p.matcher(iD)
    if(m.matches){
        formID.add(iD)
    }       
}

但它正在低于异常

groovy.lang.MissingPropertyException: No such property: matches for class: java.util.regex.Matcher

导入

import java.util.regex.Matcher
import java.util.regex.Pattern

【问题讨论】:

  • 为什么不使用 Groovy? if (iD ==~ /pdfe_oo\d+/) { ... }
  • @Wiktor 非常感谢我是 groovy 的初学者

标签: java regex groovy


【解决方案1】:

您可以使用 Groovy 直接使用 ==~ 运算符针对正则表达式测试整个字符串(它需要与 Java 中的 String#matches() 一样的完整字符串匹配)并确保从正则表达式中删除方括号(如 @987654323 @ 匹配单个字符,abc,而不是 abc 子字符串):

if (iD ==~ /pdfe_oo\d+/) { 
    formID.add(iD) 
}

注意斜线字符串 (/pdfe_oo\d+/) 的使用,它允许使用单个反斜杠来定义正则表达式转义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多