有没有办法使用正则表达式组来避免冗余?

时间:2019-06-10 00:37:44

标签: regex regex-group

我正在尝试在Python练习中使用正则表达式,在该练习中我必须获取(简化的)SQL查询。

但是,尝试编写正则表达式看起来很多余,因为有些模式会重复出现并重复多次。以这种方式,我认为正则表达式比应该的更长,更复杂。

我尝试使用反向引用,但是显然,它们将无法正常工作,因为它们旨在重复精确匹配。

这是我尝试检测UPDATE查询(使用换行符将其更清楚地显示出来)的示例:

(?i)UPDATE(?-i)\ s + \ w + \ s

(?i)SET(?-i)\ s +(\ w + \ s * [=> <(!=)(> =)(<=)] \ s *(('\ b。+ \ b ')| [0-9。] +)\ s *,\ s *) \ w + \ s [=> <(!=)(> =)(<=)] \ s * (('\ b。+ \ b')| [0-9。] +)\ s +

(?i)WHERE(?-i)\ s +((\ s * \ w + \ s *)[=> <(!=)(> =)(<=)] \ s *(('\ b。+ \ b')| [0-9。] +)\ s *,\ s *) \ w + \ s [=> <(!=)(> =)(<= )] \ s *((''b。+ \ b')| [0-9。] +)\ s *;

如您所见,SET和WHERE子句之后的表达式实际上需要使用相同的模式来匹配,只是一个';'最后是区别(以及一些可能会或可能不会忘记的可选空格)。但是,我重复了整个代码以进行匹配。

有没有一种方法可以使用组来重复相同的表达式,从而使代码更具可读性?

谢谢。

0 个答案:

没有答案