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"
Другие вопросы по тегам