2012-09-13 4 views
0

아래 정규식을 알려주십시오 : ".abc_"앞의 단어를 john으로 변경하고 싶습니다. 앞에있는 단어는 어떤 문자로도 될 수 있습니다.정규식 문자를

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

수정 문자가 길지만이 임의의 단어는 아니더라도 변경할 수 있습니다. 조언 해주십시오

------- 아래에서 수정하십시오 ------
아래의 요구 사항을 빠뜨리십시오. 아래의 솔루션에 제안 된 regex는 "insert into"를 포함하여 키워드 앞에 모든 텍스트를 강조 표시하고 싶지 않습니다.

insert into material.abc_Inventory = insert into john.abc_Inventory 
insert into material.ABC_Inventory = insert into john.ABC_Inventory 
+0

를 '\ abc_'이 교체 대상과 일치해야합니다 (*.).. – bdares

+0

@bdares 귀하의 정규 표현식이 나에게 모든 "삽입 .."을 반환합니다. 어떻게 material.abc_ 또는 material.ABC_ – VeecoTech

답변

1

이 시도 :

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

이 표현은 .abc_이 점을 포함 앞의 문자열을 허용하지 않습니다. 점을 허용하려면 대신 "^.*?\[.\]abc_"을 사용하십시오 (ideone link).

편집

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

지금 키워드 앞에 연속 된 문자의 목록뿐만 아니라 공간을 제외 :
공백이되지 않도록해야하는 경우는, 다른 표현 ( ideone link)를 사용합니다.

+0

내 게시물을 편집 한 유일한 일치합니까. 검토해 주실 수 있겠습니까? 다시 한 번 감사드립니다 – VeecoTech

+0

@belinq 위의 편집을보세요. – dasblinkenlight

3

당신은 간단하고 빠르게해야한다, 정규식없이이 작업을 수행 할 수 있습니다

var str = "material.abc_Inventory"; 

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

// str == "john.abc_Inventory" 
관련 문제