2017-12-29 4 views
-1

나는, 프로젝트의 많은 비주얼 스튜디오에서 .NET 솔루션이 같은 다양한 저작권 텍스트와 함께 AssemblyInfo.cs 포함 그들 각각 :<고정 문자열><가변 문자열><고정 문자열>에 대한 정규식?

[assembly: AssemblyCopyright("Copyright © Microsoft 2005")] 
[assembly: AssemblyCopyright("Copyright © 2016")] 
[assembly: AssemblyCopyright("Copyright © MyCompany 2014")] 


내가의 힘을 사용하여 찾고를 정규식은

[assembly: AssemblyCopyright("<<variable>>")] 

일치하는 모든 문자열을 찾아

로 교체 10

<fixed-string><variable-length-string><fixed-string>과 일치하는 정규식은 무엇입니까?

나는
[assembly: AssemblyCopyright("(.*)")] 

을 시도하지만 파일의 모든 문자와 일치하는 것으로 보인다.

+1

시도한 것을 보여주고 제대로 수행하지 못하는 이유를 설명하십시오. –

+0

@AndyLester : 저는 RegEx에서 멍청한 사람입니다. 나는 [assembly : AssemblyCopyright ("(. *)")]'를 시도했지만 파일의 모든 문자와 일치하는 것으로 보인다. 나는 우리가 말하는 동안 아직도 노력하고있다. – SNag

+0

'['와'('는 정규 표현식에서 특별한 의미를 가지며 문자 그대로 일치 시키려면 이스케이프해야한다는 것을 알고 계십니까? '. *'주위의 캡쳐 그룹. 그러나 아직 리터럴로 사용하려고 시도했습니다. – Barmar

답변

1

https://regexr.com/3ije4

var input = @" 
[assembly: AssemblyCopyright(""Copyright © Microsoft 2005"")] 
[assembly: AssemblyCopyright(""Copyright © 2016"")] 
[assembly: AssemblyCopyright(""Copyright © MyCompany 2014"")] 
"; 


var reg = new Regex(@"\[assembly: AssemblyCopyright\(""[^""]+""\)\]"); 
var result = reg.Replace(input, "[assembly: AssemblyCopyright(\"Copyright © MyCompany 2017\")]"); 

설명해

[^ X] = X 이외의 문자

[^ X] + = 하나 또는 그 이외의 캐릭터보다 X

[^ ""] + = "(이중은 이스케이프 용) 이외의 하나 이상의 문자

이것은 더 구체적이지만. + 또는. *도 작동합니다. Barmar에

+0

이 솔루션은 작동하지만 설명이 없습니다. '[^ \ "] +'이 (가) 어떻게 작동하는지 설명해 주시겠습니까? – SNag

+1

큰 따옴표 ('\'')가 아닌 하나 이상의 문자 ('+')로 이루어진 그룹 ('[]') – Pac0

1

덕분에, 나는이 작품 실현 : (. *) 고정 문자열에 특수 정규식 문자를 이스케이프 및 사용하여 변수 문자열을 테스트

\[assembly: AssemblyCopyright\("(.*)"\)\] 

완벽하게 작동합니다.

관련 문제