Groovy 中的正则表达式接受多行
Regex in Groovy to accept multiple lines
我试图让我的脚本接受 "approved" 或 "Approved" 等评论。每当用户批准时,他们可能会在评论中有一些签名,这导致脚本无法运行。
到目前为止,这是我的正则表达式:
def regexStr = /^[A|a][P|p][P|p][R|r][O|o][V|v][E|e][D|d]?/
有人知道我应该添加什么让它接受新行吗?
谢谢。
使用 (?s) 会导致 .包括换行符
这是一个例子:
def exp = /(?s)([A|a][P|p][P|p][R|r][O|o][V|v][E|e][D|d])(.*)/
def approve = '''approved my signature
Approved new signature
APPROVED old signature
apprOved'''
approve.find(exp)
编辑:
在上面的解决方案中,它只是 select 从第一个 find 到最后的所有内容。因此,这是一个更好的解决方案(使用 (?i) 作为 @cfric 在评论中建议的):
def exp = /(?mi)^approved/
def approve = '''approved my signature
Approved new signature
APPROVED old signature
apprOved'''
def m = approve =~ exp
m.eachWithIndex{ match, idx ->
println "m[${idx}] = ${match}"
}
输出:
m[0] = approved
m[1] = Approved
m[2] = APPROVED
m[3] = apprOved
说明:
- (?m) - 多行支持修饰符。在这种情况下,'.'不会匹配换行符。所以任何一行都会被单独检查。
- (?i) - 不区分大小写
- ^ - 行首
所以以 "approved" 开头的每一行,无论大小写,都会匹配该表达式。
或者,您可以在末尾添加 .*:/(?mi)^approved.*/ 以匹配后面的文本。 "approved"。在这种情况下,输出将是:
m[0] = approved my signature
m[1] = Approved new signature
m[2] = APPROVED old signature
m[3] = apprOved
我试图让我的脚本接受 "approved" 或 "Approved" 等评论。每当用户批准时,他们可能会在评论中有一些签名,这导致脚本无法运行。
到目前为止,这是我的正则表达式:
def regexStr = /^[A|a][P|p][P|p][R|r][O|o][V|v][E|e][D|d]?/
有人知道我应该添加什么让它接受新行吗?
谢谢。
使用 (?s) 会导致 .包括换行符 这是一个例子:
def exp = /(?s)([A|a][P|p][P|p][R|r][O|o][V|v][E|e][D|d])(.*)/
def approve = '''approved my signature
Approved new signature
APPROVED old signature
apprOved'''
approve.find(exp)
编辑: 在上面的解决方案中,它只是 select 从第一个 find 到最后的所有内容。因此,这是一个更好的解决方案(使用 (?i) 作为 @cfric 在评论中建议的):
def exp = /(?mi)^approved/
def approve = '''approved my signature
Approved new signature
APPROVED old signature
apprOved'''
def m = approve =~ exp
m.eachWithIndex{ match, idx ->
println "m[${idx}] = ${match}"
}
输出:
m[0] = approved
m[1] = Approved
m[2] = APPROVED
m[3] = apprOved
说明:
- (?m) - 多行支持修饰符。在这种情况下,'.'不会匹配换行符。所以任何一行都会被单独检查。
- (?i) - 不区分大小写
- ^ - 行首
所以以 "approved" 开头的每一行,无论大小写,都会匹配该表达式。 或者,您可以在末尾添加 .*:/(?mi)^approved.*/ 以匹配后面的文本。 "approved"。在这种情况下,输出将是:
m[0] = approved my signature
m[1] = Approved new signature
m[2] = APPROVED old signature
m[3] = apprOved