2012-08-07 3 views
2

"/* anytext here */"의 모든 어커런스를 공백으로 바꾸고 싶습니다. (anytext here은 다른 유형의 텍스트가 될 수 있습니다.) 내가하려는 것은 모든 주석을 공백으로 대체하는 것입니다. 정규식/* ... */

나는 정규식 작성 :

Regex regex = new Regex(@"/\*.*\*/"); 

을 ...하지만 여러 /* ... */ 패턴의 존재를 고려하지 않습니다. 예를 들어,이 문자열 :

"she /*sells*/ sea shells /*by the*/ sea shore" 

은 ...된다 :

"she sea shore" 

... 내가 원하는 것은 반면 :

"she sea shells sea shore" 

누군가가 올바른 정규식 도와 드릴까요?

+1

어떤 이유로'string.Split'와'string.Replace'이 할 것인가? – Oded

+1

정규 표현식에서 astrisk는 특수 문자이기 때문에 백 슬래시 (또는 "\"가 무엇이든)로 이스케이프해야합니다. – Matthew

+0

@Matthew, 백 슬래시가 항상 있었지만 OP에서 코드 서식을 사용하지 않았기 때문에 표시되지 않았습니다. –

답변

10

사용하는 대신 욕심 일 (.*)의 게으른 정량 (.*?). 그건 그렇고, 당신의 문자 * 문자 \*로 이스케이프 할 필요가 : 욕심 정량만큼 일치하는 반면

Regex regex = new Regex(@"/\*.*?\*/"); 

게으른 정량은 (첫 번째 */에 =) 수적게 일치 시도 가능하면 (= 마지막으로 */까지). 자세한 내용은 다음 MSDN 페이지에서 찾을 수 있습니다

+0

DOT-ALL을 사용하고 싶을 것입니다. 기본적으로 대부분의 regex 구현은 '.' 일치하는 줄 바꿈 문자를 허용하지 않습니다. –

+0

감사합니다. 완벽하게 작업했습니다. – user1582957