Javascript正则表达式 - 没有尾随空格时如何匹配

时间:2015-05-15 20:25:57

标签: javascript regex

In this regex我正在尝试从SQL select语句中提取表列表。如果语句以表名结尾则没有匹配,它可以正常工作,但有一个例外。例如:

鉴于他的正则表达式:

(?:from|join)\s+(.*?)(?:\)|\s+(?:where|on|inner|outer|full|left|right|join|\s*$))

并给出这个字符串:

"select xxxx  from table1 t1, table2, table3 t3 "  (note the last space)

比赛是:

"table1 t1, table2, table3 t3"   

但是给出了这个字符串:

"select xxxx  from table1 t1, table2, table3 t3"  (without last space)

没有比赛。如何使这项工作?

1 个答案:

答案 0 :(得分:1)

RegEx对此不是很擅长,因为它比看起来要复杂得多:

  • 如果他们使用LEFT / RIGHT INNER / OUTER / CROSS / MERGE / NATURAL连接而不是a,b语法怎么办?无论如何都应该避免使用a,b语法。
  • 嵌套查询怎么样?
  • 如果没有表(选择常量)
  • 怎么办?
  • 换行符和其他空格格式怎么样?
  • 别名?

你可以做的是一个sql解析器,并且有一个很好的Hrer

在此post中查看更多答案。