示例
AD ABCDEFG HIJKLMN
AB HIJKLMN
AC DJKEJKW SJKLAJL JSHELSJ
规则:总是2个字符代码(AB | AC | AD)在行开头然后是任何数字(> 1)的7个Chars代码(至少一个7char代码)。组之间的空间也可以是'。'
通过这个表达式,我得到了很好的分组
/^(AB|AC|AD)|((\S{7})+)/
我可以使用group [0]访问2chars代码,依此类推。
我可以同时执行上述规则吗?
使用上面的正则表达式,以下行也是有效的(因为正则表达式中的OR |)
AC
dfghjkl
asdfgh hjklpoi
这不是我需要的。
再次感谢正则表达式专家
答案 0 :(得分:2)
试试:
^(A[BCD])(([ .])([A-Z]{7}))+$
答案 1 :(得分:1)
就个人而言,我会分两个步骤
split
[ .]
匹配字符串
醇>
此代码:
def input = [
'AD ABCDEFG HIJKLMN',
'AB HIJKLMN',
'AC DJKEJKW SJKLAJL JSHELSJ',
'AC',
'dfghjkl',
'asdfgh hjklpoi',
'AC DJKEJKW.SJKLAJL JSHELSJ',
]
def regexp = /^A[BCD]([ .](\S{7}))+$/
def result = input.inject( [] ) { list, inp ->
// Does the line match the regexp?
if( inp ==~ regexp ) {
// If so, split it
list << inp.split( /[ .]/ )
}
list
}
println result
向您展示我的意思的一个例子,然后打印出来:
[[AD, ABCDEFG, HIJKLMN], [AB, HIJKLMN], [AC, DJKEJKW, SJKLAJL, JSHELSJ], [AC, DJKEJKW, SJKLAJL, JSHELSJ]]