我正在尝试让我的脚本接受“已批准”或“已批准”的评论等。每当用户批准时,他们可能在评论中有一些签名导致脚本无法运行。
到目前为止,这是我的正则表达式:
def regexStr = /^[A|a][P|p][P|p][R|r][O|o][V|v][E|e][D|d]?/
任何人都知道我应该添加什么来接受新线路?
感谢。
答案 0 :(得分:1)
使用(?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)
编辑: 在上面的解决方案中,它只会选择从第一个发现到结束的所有内容。因此,这是一个更好的解决方案(使用(?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
解释:
所以在任何字母大小写中以“已批准”开头的每一行都会匹配该表达式。 可选地,你可以在最后添加。*:/(?mi )^approved。* /以匹配之后的文本。 “批准”。在这种情况下,输出将是:
m[0] = approved my signature
m[1] = Approved new signature
m[2] = APPROVED old signature
m[3] = apprOved