2011-12-13 3 views
3

를 통해 문자열에 다른 문자의 n 번째 선두로부터 시작 문자를 대체정규식

foo ,bar ,2345 

두 번째 쉼표까지 공백을 그대로 유지해야합니다.

+1

어떤 기술이 있습니까? 이것은 정규 표현식만으로는 지나치게 복잡 할 것이다. –

+0

'foo, bar, 2345'를 생성하면 안됩니까? 또는 쉼표의 오른쪽에서 왼쪽으로 공백을 이동해야합니까? –

+0

@ JasonMcCreary 좋은 지적! 정규 표현식 만 찾으면 교체되지 않습니다. 펄, 제이, 뭐라구? – Mathletics

답변

3

\s+(?=[^,]*$) 

검색하고 아무것도 교체합니다. 이것은 문자열 앞에 콤마가 더없는 경우에만 공백 문자를 찾습니다.

"쉼표가 더 있는지 여부에 관계없이 문자열에 두 번째 쉼표 다음에 오는 모든 공백"규칙을 구현하려면 lookbehind 어설 션 내에서 무한 반복을 처리 할 수있는 정규식 엔진이 필요합니다. 현재 .NET 및 JGSoft 엔진에서만이 작업을 수행합니다. 그 중 하나를 사용하는 경우 벌금 :

(?<=(?:,[^,]*){2})\s+ 

앞에 두 개 이상의 쉼표가있는 경우 일치합니다.

+0

+1, 매우 우아합니다. 나는 긍정적 인 표정을 과소 평가했다. 나는 모든 엔진이 그들을지지하지 않을까 걱정했다. 나에게 보여줄 길 :) –