извлечь подстроку с помощью 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))
}
}