Ric*_*doE 32 regex groovy regex-group
如果我在某些文本中有以下模式:
def articleContent = "<![CDATA[ Hellow World ]]>"
Run Code Online (Sandbox Code Playgroud)
我想提取"Hellow World"部分,所以我使用以下代码来匹配它:
def contentRegex = "<![CDATA[ /(.)*/ ]]>"
def contentMatcher = ( articleContent =~ contentRegex )
println contentMatcher[0]
Run Code Online (Sandbox Code Playgroud)
但是我一直得到一个空指针异常,因为正则表达式似乎不起作用,什么是"任何文本和平"的正确正则表达式,以及如何从字符串中收集它?
tim*_*tes 46
尝试:
def result = (articleContent =~ /<!\[CDATA\[(.+)]]>/)[ 0 ]?[ 1 ]
Run Code Online (Sandbox Code Playgroud)
但是我担心你打算用正则表达式解析xml.如果此cdata是更大的有效xml文档的一部分,则最好使用xml解析器
小智 5
下面的代码显示了在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))
}
}
Run Code Online (Sandbox Code Playgroud)