2016-06-13 1 views
0

정규 표현식을 배우고 있습니다. 나는 다음과 같은 C#을 사용하여 필요한 그룹을 추출하는 방법 정규 표현식 패턴

^(?<type>\W?\w+)(?<middle>\s\w+)?\s(((?<seconds>\d+)[s-]?)?)\s?(?<body>.+?)$ 

정규식

내가

IDCH 테스트 TES의 15 초 발견 봄 사랑은 당신이 전쟁에서 기회를 찾을 것과 일치하는 것을 시도하고있는 예를 들어 문자열을 사용하는 것을 시도하고있다!

유형 : IDCH

중간 : 테스트 TES

초 : 15 초

몸 : Fevr16

나는 다음과 같은 출력하고자 발견을 .....

위의 패턴을 사용하여 예상되는 결과를 얻지 못하고 있습니다. 누구든지 내 정규식 패턴에 문제가있는 것을 도울 수 있습니까? 유형 : 여기

내가 현재 무엇입니까 무엇 IDCH을

중간 : 테스트

초 :

몸 : TES의 15 초 ........

감사합니다

+0

중간에 여러 단어를 공백으로 구분해야합니까? – MarioDS

+0

예. 0 번 이상 될 수 있습니다. –

답변

2

매우 구체적인 입력 문자열을 구문 분석하려면 다음과 같이 입력하십시오.

,
^(?<type>\W?\w+)(?<middle>(\s\D+)*)?\s(?<seconds>\d+s)?\s?(?<body>.+?)$ 

중간 부분은 초에게 \ d를 함께 수와 일치 할 수있는 기회를 제공 \D

(?<middle>(\s\D+)*)? 

를 사용하여 숫자를 제외한 모든 litteral을 잡는다 +

(?<seconds>\d+s)? 

편집 :

초를 추출하려면 앞에 공백이있는 숫자와 directl을 찾아야합니다. y 다음에 s

^(?<type>\W*\w*)(?<middle>(\s\w+)*)(?<seconds>\s\d+s)\s(?<body>.+?)$ 
+0

처음에는 '중간'이 매력으로 작동합니다! –

+0

@MaciejLos IDCH 테스트를 위해 일하지 않습니다. tes2 15s 봄을 발견하십시오. Quelle 기회를 찾으십시오! Fevr16 –

+0

@MaciejLos, 기본적으로 그룹을 사용하여 초 비트를 추출하려고합니다. –

관련 문제