正则表达式发现人物

时间:2012-09-13 02:26:49

标签: c# regex

请告知如何获得以下正则表达式:我想将“.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

2 个答案:

答案 0 :(得分:3)

你可以在没有正则表达式的情况下做到这一点,应该更简单,更快:

var str = "material.abc_Inventory";

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

// str == "john.abc_Inventory"

答案 1 :(得分: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_"));

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