C# 读取文本文件的某些行

C# 读取文本文件的某些行,c#,regex,string,C#,Regex,String,是的,我已经问过这个问题,但问题要具体得多。上次我想忽略文件的前2行和最后一行。但让我吃惊的是,任何人都可以在我想读入的内容之前和之后放入他们想要的任意多行代码,在这种情况下,我实现的代码就变成了pot 示例文件 使用[雪莱的其他数据库] 创建表db.exmpcustomers( fname varchar(100)NULL, lname varchar(100)NULL, 出生日期空, 房屋编号int NULL, streetname varchar(100)NULL )在[小学] 我需要做的

是的,我已经问过这个问题,但问题要具体得多。上次我想忽略文件的前2行和最后一行。但让我吃惊的是,任何人都可以在我想读入的内容之前和之后放入他们想要的任意多行代码,在这种情况下,我实现的代码就变成了pot

示例文件

使用[雪莱的其他数据库] 创建表db.exmpcustomers( fname varchar(100)NULL, lname varchar(100)NULL, 出生日期空, 房屋编号int NULL, streetname varchar(100)NULL )在[小学] 我需要做的是找出我的数据从哪里开始(是fname-但请记住它可以被称为任何东西,所以我不能使用正则表达式查找“f”),它在哪里结束(最后一个NULL),然后读入它。或者,你知道,读入文件并选择数据;不管怎样。
我曾考虑过使用regex查找括号,但它不也会在我的数据类型中查找括号吗

有什么想法吗?任何事都会有帮助的,我完全被卡住了

编辑


哦,而且,原始文件实际上在数据(缩进)之前有空格/制表符,但我不确定这是否会改变任何东西。

我只想在括号之间匹配数据。只要没有
跟在
后面,并且没有
创建之前),内容中的括号就不重要了

如果您不太了解SQL脚本,那么将控制权公开给其他人是一个好主意吗?为什么不创建一个简单的DSL来实现相同的好处?例如:

DATABASE databasenamegoeshere
TABLE tablenamegoeshere
FIELD name type default
FIELD name type default
FIELD name type default

然后将其转换为相应的SQL代码?似乎更安全一些。或者它必须是可执行SQL吗?

我在你的另一个问题中提供的正则表达式将与你的数据完全匹配。你的问题实际上是另一个问题的重复。

我不想这样做,因为我不完全理解SQL脚本,我也不知道w如果所有SQL脚本(此类型)必须这样写。虽然我假设他们会这样写。比如,数据需要放在括号中。是的,这并不理想-我没有足够的SQL经验来确定其他地方没有潜在的括号。你可以总是提取括号中的每一条数据,然后在每一条数据中循环寻找包含
NULL
,或者其他一些有保证的关键字?稍微健壮一些,但除此之外,您可能应该研究一些SQLinterpreter@New开始:这个想法其实没那么糟糕,因为(假设你可以),定义自己的语法可以确保它适合正则表达式,而不能断言DDL适合正则表达式,因为DDL/SQL不是正则语言,也就是说,没有正则表达式可以处理每种可能的情况…(+1)这是对的,我现在明白了。我真傻。现在有点问题,你能帮我吗?@New Start:当然,你现在指的是什么问题?如果是新问题,就创建一个新问题。如果仍然是关于这个主题,我建议返回并在那里编辑你的问题/留下评论
DATABASE databasenamegoeshere
TABLE tablenamegoeshere
FIELD name type default
FIELD name type default
FIELD name type default