2016-07-07 2 views
0

아래의 예와 같이 사용자 정의 마크 다운 텍스트를 구문 분석하려고합니다.정규 표현식을 사용하여 그룹을 정확하게 일치 시키십시오.

1 
Post:1 
Image:1|thumb 
Image:1|thumb|html classes here 
1|thumb|html classes here 

일반 형식 : 콜론 후 아이디를 제외한 ModelName:ID|image_size|html classes

모든 (:) 선택 사항입니다. id는 문자열 일 수도 있습니다. 마지막 파이프 다음에 여러 개의 공간으로 분리 된 CSS 클래스가있을 수 있습니다.

^([\w\.]+)?(?::([-\w\d\.]+))(?:\|(\w+))?(?:\|([-\w\s\d]+))?$ 

Regular expression visualization

Debuggex Demo

이 정규 표현식은 내가

  1. 콜론해야 문제를 해결하는 방법을 알아낼 수있는 몇 가지 문제가 있습니다 : 이것은 내가 지금까지 무엇을 가지고 메인이 아닌 병합되는 라인 앞에 나타납니다. 즉, 콜론은 그룹 1이있는 경우에만 필요합니다. . 파이프 (와 같은 (동일 아이디어 | 그룹 3 전), 4
  2. 정규식은 상단에 지난 3 테스트 케이스를 일치하지 않는 1Post:1 정확하게 일치

답변

1

당신은 그것을 할 수 있습니다.

(?:(\w+):)?(\d+)(?:[^|\n]*\|([^|\n]*)(?:\|(.*))?)? 

으로는 1 군, 2 군, 제 4 회에 3, 클래스로 이미지 크기에 ID.

첫째의 C의 첫 번째 태그을 캡처 할 수 있습니다 a 태그 (옵션), 숫자. 그 다음에도 선택적인 그룹 인 |을 검색 한 다음 모든 것을 | 또는 줄 끝으로 캡처합니다. |이 발견되면 줄 끝까지 모든 것을 캡처합니다.

See it here at regex101.

+0

감사합니다. 그것은 확실히 올바른 방향으로 나아가는 단계입니다. 그러나 그룹에서 이미지 및 게시를 캡처해야합니다. – danielbker

+0

당신마다 편집 : – ClasG

+0

나는 당신의 원래 정규식을 편집하고 같은 대답에 도착했습니다! 당신의 도움을 주셔서 감사합니다. 당신은 정규식 전문가입니다! – danielbker

관련 문제