извлечь подстроку с помощью regex в groovy

Если у меня есть следующий шаблон в текст:

def articleContent =  "<![CDATA[ Hellow World ]]>"

Я хотел бы извлечь часть "Hellow World", поэтому я использую следующий код, чтобы соответствовать ей:

def contentRegex = "<![CDATA[ /(.)*/ ]]>"
def contentMatcher = ( articleContent =~ contentRegex )
println contentMatcher[0]

однако я продолжаю получать исключение нулевого указателя, потому что регулярное выражение, похоже, не работает, что было бы правильным регулярным выражением для "любого мира текста" и как собрать его из строки?

2 ответов


попробуй:

def result = (articleContent =~ /<!\[CDATA\[(.+)]]>/)[ 0 ]​[ 1 ]

однако я беспокоюсь, что вы планируете анализировать xml с регулярными выражениями. Если этот cdata является частью большего допустимого xml-документа, лучше использовать синтаксический анализатор xml


приведенный ниже код показывает извлечение подстроки с помощью regex в groovy:

class StringHelper {
@NonCPS
static String stripSshPrefix(String gitUrl){
    def match = (gitUrl =~ /ssh:\/\/(.+)/)
    if (match.find()) {
        return match.group(1)
    }
    return gitUrl
  }
static void main(String... args) {
    def gitUrl = "ssh://git@github.com:jiahut/boot.git"
    def gitUrl2 = "git@github.com:jiahut/boot.git"
    println(stripSshPrefix(gitUrl))
    println(stripSshPrefix(gitUrl2))
  }
}