Java 使用正则表达式同时执行序列和组?
一点延续 样品 AD ABCDEFG HIJKLMNJava 使用正则表达式同时执行序列和组?,java,regex,groovy,Java,Regex,Groovy,一点延续 样品 AD ABCDEFG HIJKLMN AB HIJKLMN AC DJKEJKW SJKLAJL JSHELSJ 规则:始终在行开始处使用2个字符代码(AB | AC | AD),然后在其后使用任何数量(>1)的7个字符代码(至少一个7字符代码)。组之间的空格也可以是“.”。 通过这个表达式,我可以很好地将其分组 /^(AB | AC | AD)|((\S{7}+)+)/ 我可以使用组[0]访问2chars代码,依此类推 我可以同时执行上述规则吗 对于上述正则表达式,以下行也有效
AB HIJKLMN
AC DJKEJKW SJKLAJL JSHELSJ 规则:始终在行开始处使用2个字符代码(AB | AC | AD),然后在其后使用任何数量(>1)的7个字符代码(至少一个7字符代码)。组之间的空格也可以是“.”。 通过这个表达式,我可以很好地将其分组
/^(AB | AC | AD)|((\S{7}+)+)/
我可以使用组[0]访问2chars代码,依此类推 我可以同时执行上述规则吗 对于上述正则表达式,以下行也有效(因为正则表达式中的OR |) AC
dfghjkl
asdfgh hjklpoi 这不是我需要的 再次感谢regex专家尝试一下:
^(A[BCD])(([ .])([A-Z]{7}))+$
试试看:
^(A[BCD])(([ .])([A-Z]{7}))+$
就我个人而言,我会分两步来做这件事
根据分隔符字符[.]
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
就我个人而言,我会分两步来做这件事
根据分隔符字符[.]
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
似乎您的方法比为了1而在同一行上执行2个regex语句更聪明/性能更好。验证和2.2.谢谢!如果你需要编辑它,你会更开心:-)祝你好运!似乎您的方法比为了1而在同一行上执行2个regex语句更聪明/性能更好。验证和2.2.谢谢!如果你需要编辑它,你会更开心:-)祝你好运!