2010-01-29 4 views
4

그래서 나는이 같은 이미지 태그를 가진 일부 HTML이 있다고하세요 :은 HTML 이미지 태그 파일 이름에 괄호를 제거

<p> (1) some image is below: 
<img src="/somwhere/filename_(1).jpg"> 
</p> 

난 그냥에서 괄호를 제거하는 정규식을 원하는을 파일 이름은 나의 HTML은 다음과 같이 표시됩니다

<p> (1) some image is below: 
<img src="/somwhere/filename_1.jpg"> 
</p> 

사람이 작업을 수행하는 방법을 알고 있나요? 내 프로그래밍 언어가 C#인데 차이가 있다면 ...

나는 너의 영원한 감사를 보내고 너의 길을 갈 것이다.

string imgFilename = "/somewhere/image_(1).jpg"; 
imgFilename = imgFilename.Replace("(", "").Replace(")", ""); 

을 또는 당신은 HTML 문자열 내에서 전체 태그를 대체 정규식이 필요합니까 : :)

이 간단한 경우
+0

전후의 차이가 보이지 않습니다. 그게 정규식을 매우 쉽게 만들어줍니다. –

+0

전체 HTML 문서, 문서의 조각 또는 무엇을 정규식을 바꾸고 있습니까? – RedDeckWins

+0

다시는 아니요 ... – Aaronaught

답변

1

답변에서 정규식을 판단하는 대신이 작업을 수행하는 데 도움이되는 HTML Agility을 사용하면 작업이 훨씬 쉬워 질 것이라고 생각합니다. 그러면 HTML을 파싱하는 것이 훨씬 쉽습니다. 해야 할 것.

호프가 도움이 되었으면 안녕하세요, 탐. 파일 이름은 항상 형식과 일치하는 경우

+0

이것이 내가 한 일입니다. RegEx는 제대로 작동하지 않았으며 일부는 제 3 자 라이브러리를 통해 수행해야했기 때문에 이러한 부분이있을 수 있습니다.대신 html을 가진 모든 레코드를 HtmlAgility로 가져 와서 앵커 태그뿐만 아니라 이미지에서 정크를 제거했습니다. 모두 좋은 결과였습니다. 감사합니다. – fregas

0

, 당신은 예를 들어, string.Replace를 사용할 수 있을까?

+0

html 본문 (다른 태그, 텍스트 등)에서 parentheis를 바꾸지 말고 태그 src 속성에 태그가있는 경우에만 괄호를 제거해야합니다. – fregas

+0

Regex에서 해당 작업을 수행 할 수 없습니다. HTML 구문 분석기를 사용해야합니다. – bobince

1

이 (오히려 밀도) 정규식을 수행해야합니다 (I 줄 바꿈을 포함하지 않았지만, 공백 조합)

string s = Regex.Replace(input, @"(<img\s+[^>]*src=""[^""]*)\((\d+)\)([^""]*""[^>]*>)", "$1$2$3"); 
0
Regex.Replace(some_input, @"(?<=<\s*img\s*src\s*=\s*""[^""]*?)(?:\(|\))(?=[^""]*?""\s*\/?\s*?>)", ""); 

( 또는 )<img src ="로 시작하고, 선택적으로, 텍스트를 찾습니다 그리고 임의의 공백 조합을 사용하여 임의의 텍스트와 "> 또는 "/>을 다시 입력하고 아무 것도 사용하지 않습니다.

1

Nick's solution은 괜찮지 만이 하나의 아무 곳이나 속성에 어떤 괄호 일치합니다

s = Regex.Replace(@"(?i)(?<=<img\s+[^>]*\bsrc\s*=\s*""[^""]*)[()]", ""); 

lookbehind는 경기가 img 태그의 src 속성 내에서 발생하는 것을 보장 . 특성이 큰 따옴표 (큰 따옴표)로 묶여 있다고 가정합니다. 작은 따옴표 (아포스트로피) 나 따옴표를 사용할 필요가 없으면 정규식은 훨씬 더 복잡해집니다. 네가 필요하다면 나는 게시 할 것이다.

관련 문제