0

请告知如何获取下面的正则表达式:我想将“.abc_”前面的单词更改为 john。前面的单词可以是任意字符。

 material.abc_Inventory    = john.abc_Inventory  
 abx.abc_abxx              = john.abc_abxx  
 stackoverflow.abc_stack   = john.abc_stack

如果它有很长的修复字符但不是这个随机单词,我可以更改。请指教

------- 在下面编辑 ------
错过下面的要求。以下解决方案中建议的正则表达式突出显示了关键字之前的所有文本,包括我不想要的“插入”。

insert into material.abc_Inventory   = insert into john.abc_Inventory  
insert into material.ABC_Inventory   = insert into john.ABC_Inventory
4

2 回答 2

3

您可以在没有正则表达式的情况下执行此操作,应该更简单更快:

var str = "material.abc_Inventory";

str = "john" + str.Substring(str.IndexOf(".abc_"));

// str == "john.abc_Inventory"
于 2012-09-13T02:38:42.297 回答
1

尝试这个:

Console.WriteLine(Regex.Replace("material.abc_Inventory", "^[^.]*[.]abc_", "john.abc_"));

这个表达式不允许前面的字符串.abc_包含一个点。如果您想允许使用点,请"^.*?\[.\]abc_"改用(ideone link)。

编辑:如果您必须避免使用空格,请使用不同的表达式(ideone link):

Console.WriteLine(Regex.Replace("material.abc_Inventory", "^[^. ]*[.]abc_", "john.abc_"));

现在关键字前面的连续字符列表也排除了空格。

于 2012-09-13T02:32:23.060 回答