Так у меня есть эта строка для ввода и регулярного выраженияНужна помощь Regex
string regs = "CREATE PROCEDURE TTTTT.TTTTTTTTT @idVal INT = null, @idVal2 INT, @DecimalVal Decimal(20,2) = null, @NumberVal Numeric(20) = null, @StringVal VarChar(80) = NULL AS";
var result = Regex.Matches(regs, @"\s*(?<parameterdeclaration>@.*?)\s*(.*?=.*?)\s*(,|\bAS\b)", RegexOptions.IgnoreCase);
, который я хочу, чтобы разделить в массиве следующим образом:
@idVal INT = null,
@idVal2 INT,
@DecimalVal Decimal(20,2) = null,
@NumberVal Numeric(20) = null,
@StringVal VarChar(80) = NULL AS
У меня есть это регулярное выражение:
@"\s*(?<parameterdeclaration>@.*?)\s*([^(\d,\d)],|\bAS\b)"
, который работает как следует, но я также хочу посмотреть знак равенства '='
Так что теперь у меня есть это:
@"\s*(?<parameterdeclaration>@.*?)\s*(.*?=.*?)\s*(,|\bAS\b)"
Но это заканчивается нанизывая эти два вместе: @idVal2 INT, @DecimalVal Decimal(20,2) = null,
есть ли какая-либо одна идея, как сказать ему, чтобы сначала искать «=» с последующим по запятой или AS и если не нашли то идти только запятой Я не могу использовать знак @ в качестве индикатора конечной причины имени еще может фактически содержать знак @
И я не могу сказать, просто равно последующей запятой или просто запятая, потому что тогда это поле будет отрезано @DecimalVal Десятичного (20,
Так что мне нужно, чтобы это было, если равно затем запятая \ AS еще запятая \ AS
Уточните пожалуйста. Я чувствую, что английский - это не тот язык, на котором вы очень хорошо говорите, и некоторые примеры результатов того, что вы подразумеваете под «но я хочу также посмотреть на знак равенства» = «», что значительно прояснит вашу проблему. – Jerry