2009-08-29 15 views
0

정규 표현식을 사용하여 다음 정보를 추출하는 데 도움이 필요합니다. "예 \ C"하지만 마지막에 = 이상한 첨자는 L.보고하지 사이에 문자열의 시작과에 문자를 누락정규식을 사용하여 문자열에서 데이터 추출

******** * 여기

내 입력 문자열 **

"C : \"를 한 문자열로, "예"를 다른 문자열로 추출해야합니다.

감사의 말을 전합니다.

+0

나는 아이디어를 가지고 있지만 나는이 슛, 그것은 내가 원하는 모양주고 goiong 읽을 수있을만큼 쉬운 것입니다 ... =) – IbrarMumtaz

답변

1

다음 정규 표현식은 첫 번째 캡처 그룹에 C:\을 반환하고 두 번째에 나머지는 :

^(\w:\\)(.*)$ 

이가 찾고 : 편지 (\w로 시작하는 전체 문자열 (^…$), 비록 [a-z] 것 Windows 드라이브 문자의 경우 더 정확할 수 있음), :\이 뒤에옵니다. 모든 나머지 (.*)는 두 번째 그룹에 캡처됩니다.

UNC 경로에서는 작동하지 않습니다. 경로로 작업하는 경우 가장 좋은 방법은 문자열 및 정규 표현식을 사용하는 것이 아니라 System.IO에있는 API를 사용하는 것입니다. 클래스는 이미 원하는 기능을 제공합니다.

+0

그래서 지금 3 시간 동안 평면을 노력하고있다. 내 문제가 해결된다면 대답 해 줄게. 감사. – IbrarMumtaz

0
Regex r = new Regex("([A-Z]:\\)([A-Za-z]+)"); 
Match m = r.Match(@"C:\"); 

string val1 = m.Groups[0]; 
string val2 = m.Groups[1]; 
3

정규 표현식을 사용하지 않아도됩니다. 너무 많은 일을, 나는 그것을 망칠 너무 가능성이 높습니다.

var x = @"C:\Yes"; 

var root = Path.GetPathRoot(x); // => @"C:\" 
var file = Path.GetFileName(x); // => "Yes" 
+0

괜찮 았지만 경로로 작동하지 않습니다. 예입니다. 어쨌든 고마워. – IbrarMumtaz

+0

"C : \ Yes"처럼 보이면 경로가 아닐지라도 주어진 이유에 따라이 방법을 사용합니다. 구성 파일이든 아니든간에 컴퓨터에는 아무런 차이가 없습니다. – Alec

관련 문제