匹配 table 别名

Matching table alias

我想创建一个识别 table 带有别名的正则表达式。我可以同时拥有

table_name AS alias
table_name alias

我试过这个

^(.*?)\s*(?:as|\s)\s*(.*?)$

它确实有效,除了别名以 'as' 开头的情况。

工作演示:https://regex101.com/r/jX3tK0/1, https://regex101.com/r/wU0dF8/1

演示无效:https://regex101.com/r/tY8bK8/1

我该如何解决这个问题?

您可以在 as:

之后要求一个单词边界 (\b)
^(.*?)\s*(?:as\b|\s)\s*(.*?)$

https://regex101.com/r/tY8bK8/2

或者,您可以 this:

^(.*?)(?:(\s+as)?\s)\s*(.*?)$

这是因为您选择的基数。以下应该适合您的需要:

^(.*?)\s+(?:as\s+)?(.*?)$

Debuggex Demo