Groovy 正则表达式多次匹配
Groovy Regex multiple matches
将以下字符串保存在变量“start”中:
user stuff here 5
user banana1 pswd 4
user lemon2 pswd 5
mumbo jumbo 12333 3
user h3lp pswd 8
什么正则表达式将获取 'pswd' 之后的三位数字 (4,5,8),前面是随机字符串和 'user'? groovy 匹配的新手。我尝试了这个 (username.*secret).\d
理想情况下希望执行这样的操作,然后可以在数组中访问匹配项
def pattern = ~/\S+er\b/
def matcher = "My code is groovier and better when I use Groovy there" =~ pattern
assert matcher[0..-1] == ["groovier", "better"]
您可以使用
/\buser\s+\S+\s+pswd\s+(\d+)/
见regex demo。 详情:
\b
- 单词边界
user
- 一个user
字
\s+
- 一个或多个空格
\S+
- 一个或多个 non-whitespaces(一些单词)
\s+
- 一个或多个空格
pswd
- 一个pswd
字
\s+
- 一个或多个空格
(\d+)
- 第 1 组:一个或多个数字。
参见 Groovy demo:
String s = "user stuff here 5\nuser banana1 pswd 4\nuser lemon2 pswd 5\nmumbo jumbo 12333 3\nuser h3lp pswd 8"
def re = /\buser\s+\S+\s+pswd\s+(\d+)/
def res = (s =~ re).collect { it[1] }
print(res)
输出:
[4, 5, 8]
将以下字符串保存在变量“start”中:
user stuff here 5
user banana1 pswd 4
user lemon2 pswd 5
mumbo jumbo 12333 3
user h3lp pswd 8
什么正则表达式将获取 'pswd' 之后的三位数字 (4,5,8),前面是随机字符串和 'user'? groovy 匹配的新手。我尝试了这个 (username.*secret).\d
理想情况下希望执行这样的操作,然后可以在数组中访问匹配项
def pattern = ~/\S+er\b/
def matcher = "My code is groovier and better when I use Groovy there" =~ pattern
assert matcher[0..-1] == ["groovier", "better"]
您可以使用
/\buser\s+\S+\s+pswd\s+(\d+)/
见regex demo。 详情:
\b
- 单词边界user
- 一个user
字\s+
- 一个或多个空格\S+
- 一个或多个 non-whitespaces(一些单词)\s+
- 一个或多个空格pswd
- 一个pswd
字\s+
- 一个或多个空格(\d+)
- 第 1 组:一个或多个数字。
参见 Groovy demo:
String s = "user stuff here 5\nuser banana1 pswd 4\nuser lemon2 pswd 5\nmumbo jumbo 12333 3\nuser h3lp pswd 8"
def re = /\buser\s+\S+\s+pswd\s+(\d+)/
def res = (s =~ re).collect { it[1] }
print(res)
输出:
[4, 5, 8]