2016-07-20 3 views
0

정규식 전문가가 쉽게 이해할 수 있기를 바랍니다.C# Regex 대괄호 패턴 바꾸기

blah blah blah 
[Image "pasted.bmp-20160720140433"] 
blah blah 
[Image "pasted.bmp-20160720140458"] 
blah blah 
[Image "download"] 
blah blah 
blah blah [Image "download3"] [Image "download5"] blah blah 

내가 base64로 포함 된 이미지와 함께 [이미지 "pasted.bmp - 20160720140433를"] 대체 할 :

나는 다음과 같습니다 텍스트 파일이 있습니다. 이미지 게재 위치는 항상 "[이미지]"로 시작하고 항상 둘러싸는 괄호로 끝납니다.

작업을 수행 할 수있는 쉬운 정규식 대체품이 있습니까?

편집 :

궁극적으로이 같은 HTML을 준수하기 위해 문자열을 싶습니다

blah blah blah 
<img src='data:image/png;base64,data_which_I_get_from_using_the_file_name' /> 
blah blah blah 

가 대단히 감사합니다.

\[Image "이 패턴의 첫 번째 부분 일치 :

+0

'\ [\ bImage \의 B를 * \.]' – niksofteng

+0

당신이 이미지와 이미지 이름을 바꾸시겠습니까 바이트? – Charlie

+0

@NikhilVartak 한 줄에 여러 개의 태그가 하나만 일치합니다. –

답변

3

\[Image "([.\-\w]+)"\]은 패턴

약간의 설명과 일치합니다. [[]으로 여기에서 이스케이프 처리됩니다.
[.\-\w]은 문자 목록입니다. .은 마침표와 일치하고 \-은 하이픈입니다. \wA-Z, a-z, or 0-9
+[.\-\w]+ 주변의 () 년대가 일치하는 항목이 발견 될 때, 이미지 이름이 의미 캡처 그룹 만들 수
같은 행에 많은 시간과 일치하는 의미있는 모든 단어 문자와 일치 이용 가능하게 만들어야한다.
마지막으로 "\]은 패턴의 끝과 일치합니다. C#에서이를 사용할 때 "\\[Image \"([.\\-\\w]+)\"]" 또는를 사용하는 등 올바른 문자열을 얻기 위해 특정 문자를 이스케이프해야한다는

참고 @ 또한 @"\[Image ""([.\-\w]+)""\]"

같은 -quoted 문자열, 미래에 웹 사이트는 할 수있다 정규 표현식을 생성하고 작동 방식 분해에 도움이, 내가 base64로 내용이 이미지 이름에 따라 달라집니다 가정으로 직접 작동하지 않습니다 Regex.Replace를 사용하여 지금 regex101


로 위를 입력하십시오. 이 경우는 다음과 같이 수있는 Matchclass

불완전한 예를 사용할 수 있습니다

string pattern = @"\[Image ""([.\-\w]+)""\]"; 
Regex rgx = new Regex(pattern); 
string file = "..."; 

foreach (Match match in rgx.Matches(file)) 
{ 
    // Modify file here 
    // match.Index will have the position of a match 
    // match.Value will have the capture, e.g. "download3" 
} 
+0

안녕하세요, 브래들리, 깊이있는 설명에 감사드립니다. 그냥 질문을 확장하면 괄호 안에 이미지 이름을 추출하고 싶습니다. 다시 한 번 감사드립니다 – user3769327

+1

정규 표현식에서 괄호'()'를 사용하면 * capture group *이됩니다. 위의 패턴으로 일치가 발견되면, "사이의 모든 것이'일치합니다.Value' 속성 –

+1

문자열 패턴 = @ "\ [이미지" "([. \ - \ w] +)" "\]"; – user3769327