c# - 用于从 SQL 查询中提取列定义的正则表达式

标签 c# regex

考虑以下查询:

select
    foo,
    bar,
    yourmom
from
    theTable

select top 10 *
from
    theTable

select distinct foo, bar + 1, yourmom from theTable

我想要一个可以提取的正则表达式查询:

foo,
bar,
yourmom

*

foo, bar + 1, yourmom

分别。

我尝试了 ^\sselect\s(distinct\s)?(top\s\d*)?(?'columns'.*\s)from[\s.]*$ ,我认为这会起作用,但不会。我已经玩了一段时间了,但我仍然无法在所有三个测试用例中使用它。有人可以帮我解决他们的 regex-fu 问题吗?

最佳答案

编辑:首先,您需要使 .- 匹配每个字符,包括换行符。在 Java 中,您可以设置 DOTALL 标志,但在 C# 中,我相信您应该使用 RegexOptions.SingleLine 选项。

那么这个表达式应该有效:

^\s*select\s+(?:distinct\s+)?(?:top\s+\d*\s+)?(?'columns'.*?)from.*$

关于c# - 用于从 SQL 查询中提取列定义的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10212855/

相关文章:

C# 帮助 : Sorting a List of Objects in C#

c# - 我应该使用 c# mongodb 驱动程序的同步方法还是异步方法?

regex - pandas python 中字符串的精确匹配

python - 将大文本文件拆分为句子

c# - 正则表达式 - 如果存在捕获的组,则条件替换

c - 使用 regex.h 在 c 中进行模式匹配/提取

c#:获取控件调用列表中的委托(delegate)队列

c# - 使用 AspNetCoreModuleV2 使用相同的应用程序池托管多个 .net 核心

javascript - ASP.NET 如何使用 ajax 将文本从文本框推送到另一个页面

mysql - 如何在 MySQL 中通过 REGEX 匹配连接两个表?