如何解决应用正则表达式规则转换现有变量/字符串
我正在尝试使用正则表达式规则来转换变量的内容。
例如,如果我具有此值1:
value1=this-is-an-example-string
我想创建一个新值-value2
-使用下面的正则表达式来分隔前三个单词和它们之间的连字符:
regex=^\w*-\w*-\w*
此正则表达式对应于value1中的以下内容:
this-is-an
如何使用value {1上的regex
中定义的正则表达式来生成仅包含this-is-an
的新值(value2)。
我尝试使用以下方法,但不起作用:
value2 ==~ value1(regex)
解决方法
您可以这样做:
def haystack = 'this-is-an-example-string'
将括号放在要捕获的匹配对象周围
def needle = haystack =~ /^(\w*-\w*-\w*).*/
如果有比赛
if (needle) {
这将获得匹配对象中的第一个捕获
assert needle[0][1] == 'this-is-an'
}
所以
def value2 = needle[0][1]
println value2
,
==~
运算符用于精确匹配,并返回boolean
。一种实现所需功能的方法是使用=~
“查找”运算符,该运算符返回Matcher并对其进行处理:
groovy> value1 = "this-is-an-example-string"
groovy> regex = /^\w*-\w*-\w*/
groovy> println "Using the findAll method Groovy adds to Matcher"
groovy> value2 = (value1 =~ regex)
groovy> println value2
groovy> println value2.findAll()[0]
groovy> println ""
groovy> println "Or indexing directly into the Matcher"
groovy> value3 = (value1 =~ regex)[0]
groovy> println value3
Using the findAll method Groovy adds to Matcher
java.util.regex.Matcher[pattern=^\w*-\w*-\w* region=0,25 lastmatch=]
this-is-an
Or indexing directly into the Matcher
this-is-an
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。