我需要一个可以匹配这样的正则表达式:
1234 <CIRCLE> 12 12 12 </CIRCLE>
1234 <RECTANGLE> 12 12 12 12 </RECTANGLE>
我来写这个正则表达式:
(\\d+?) <([A-Z]+?)> (\\d+?) (\\d+?) (\\d+?) (\\d*)? (</[A-Z]+?>)
当我尝试匹配矩形时,它工作正常,但对于圆形,它不工作
问题是我的第五组没有捕获,尽管应该是?
那是因为只有(\\d*)?
part是可选的,但它前面和后面的空格是强制性的,因此如果(\\d*)
找不到last,则最终需要在末尾有两个空格。尝试用类似的东西
(\\d+?) <([A-Z]+?)> (:?(\\d+?) ){3,4}(</[A-Z]+?>)
哦,如果您要确保结束标记与打开标记相同,则可以使用组引用,例如\\1
代表第一组的匹配。所以也许将您的正则表达式更新为
(\\d+?) <([A-Z]+?)> (:?(\\d+?) ){3,4}(</\\2>)
// ^^^^^^^-----------------------^^^
// group 2 here value need to match one from group 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句