【发布时间】:2019-06-27 10:33:56
【问题描述】:
我有这样的正则表达式:
(?i)^(?!.*\bWITH\b).*\(\s*.*\s*\b(INDEX|FASTFIRSTROW|HOLDLOCK|SERIALIZABLE|REPEATABLEREAD|READCOMMITTED|READUNCOMMITTED|ROWLOCK|PAGLOCK|TABLOCK|TABLOCKX|NOLOCK|UPDLOCK|XLOCK|READPAST)\b\s*.*\s*\)
它在http://regexstorm.net 中返回true。
但是当我在 C# 中运行时,它总是返回 false。
字符串输入到文本:
INNER JOIN t_hat_meisaimidasi AS MM (READCOMMITTED, NOLOCK) WHERE ( AND hat_kanri_no = ?
谁能解释一下为什么?
【问题讨论】:
-
暂时思考一下:DacFx package 包括一个功能齐全的 T-SQL 解析器 (
Microsoft.SqlServer.TransactSql.ScriptDom.TSqlParser)。从长远来看,这可能比使用正则表达式更值得。 -
我将继续要求人们停止对使用哪种人类语言进行编程;它与问题无关,并且问题根本不受选择的影响。不停地谈论它会走一条细线。