Шаблон, который соответствует a, но игнорирует образец a, который является подстрокой b [дубликат]C#

Место общения программистов C#
Ответить
Anonymous
 Шаблон, который соответствует a, но игнорирует образец a, который является подстрокой b [дубликат]

Сообщение Anonymous »


Возможный дубликат:

Найдите шаблон, соответствующий «a», игнорируя тот «a», который находится внутри «b» и «c»


Если у меня есть следующая строка (например)

string q = "select field1 from t1 where field1 in (select field1 from t2)";


В данном случае у меня

a = " from"; b = @"\(.* from.*\)"; => " from" within parenthesis


Здесь вы можете увидеть, что «a» является подстрокой «b».

Самый близкий шаблон, который у меня есть:

string pat = @"^((?!\(.* from.*\)).)* from((?!\(.* from.*\)).)*$";


Но мне нужно, чтобы «pat» было изменено на «a» так, чтобы «a» не было подстрокой «b»... («a» и «b» — это переменные шаблоны). Я застрял в переводе этого в регулярное выражение. Я хочу использовать

string answer=Regex.Relace(q , pat , ",field2 from");


Желаемый результат: (значение в ответе должно быть)

"select field1,field2 from t1 where field1 in (select field1 from t2)"


Подробнее здесь: https://stackoverflow.com/questions/119 ... tring-of-b
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»