Regex для замены слова, которому предшествует конкретное слово
Поэтому я пытаюсь найти регулярное выражение для замены слова во всех предложениях, начинающихся с конкретного слова (объявите в моем случае)
Пример:
объявить @order int
объявить @ порядок2 int
2 ответа
Решение
Это должно сделать трюк:
var lines = new string[]
{
"declare @order int",
"test string",
"declare @order2 int"
};
string pattern = "declare";
string replacement = "something";
Regex regex = new Regex(pattern);
var output = lines.Select(l => l = (l.StartsWith(pattern)) ?
regex.Replace(l, replacement, 1) : l);
Я не эксперт, но я думаю, что вы можете использовать: /declare (@order)/g
Я проверил это в Javascript, который дает:
var regex = /declare (@order)/g
var result1 = regex.exec("origin: test @order int");
// result: null
var regex = /declare (@order)/g
var result1 = regex.exec("result: declare @order int");
// result: ["declare @order", "@order"]
Вы можете использовать регулярное выражение в функции str.replace:
var str = "result: declare @order int";
var res = str.replace(/declare (@order)/g, "new-value");
// Result: "result: new-value int"