我有这个正则表达式在 Java 环境中按预期工作,但我无法使其在 Javascript 上正常工作:
/^(?:select\s+)?(?:([\w\d]+)?\.?([\w\d]+))?(?:\s*\,\s*)?(?:([\w\d]+)?\.?([\w\d]+))?(?:\s*from\s+)([\w\d\.]+)\s*([\w\d]+)?$/g
这个表达式应该匹配这些类型的输入行:
select a.id, a.name from public.blah a
select a, a.name from public.blah a
select id, name from blah
a.id, name from brah a
from blah a
对于我期望的群体:
1:第一个投影别名 (a)(如果有)
2:第一个投影属性(id)(如果有)
3:第二个投影别名(a)如果有的话
4:第二个投影属性(名称)(如果有)
5:关系名称(public.blah)
6:关系别名(a)如果有的话
正则表达式在 Javascript 上匹配,但它无法获取组。我必须对此进行一些更改才能使其正常工作。
var optionsPattern = /^(?:select\s+)?(?:([\w\d]+)?\.?([\w\d]+))?(?:\s*\,\s*)?(?:([\w\d]+)?\.?([\w\d]+))?(?:\s*from\s+)([\w\d\.]+)\s*([\w\d]+)?$/g;
var text = 'select id, text from options.test';
var match = text.match(optionsPattern);
if(match) {
alert(match[0]); // select id, text from options.test
alert(match[1]); // undefined
}
你们有什么需要改变的线索吗?
谢谢!