2016-07-27 1 views
1

| 문자로 구분 된 4 개의 부분 문자열로 구성된 여러 블록으로 구성된 문자열이 있습니다. 예를 들면 다음과 같습니다.Regex -에서 분리 기호 문자 제외 *

255 | UpdatePanel | updatePanel1 | somecontent1234 |

4 문자열

의 여러 연속 블록이있을 것이다 대부분의 경우

| 255 | UpdatePanel | updatePanel1 | somecontent1234 | 256 | UpdatePanel | updatePanel2 | someOtherContent |

은 지금은 4 문자열

2 경기를

문제가
\|([1-9]+)\|(UpdatePanel)\|(updatePanel1|updatePanel2)\|(.*)\| 

, 이것은 위의 전체 예를 들어 문자열을 일치하는 것으로 보인다 이러한 각 블록과 일치하는 정규 표현식을해야하고,하지

어떻게 든 구분 기호 (|)를. *에서 제외해야합니까, 아니면 다른 것입니까?

+0

'. *'을'[^ |] *'로 바꾸면,''.''가 오타되기 전에 믿을 것입니다. –

답변

1

당신은 부정 문자 클래스와 욕심 도트 일치를 대체 할 수있다 :

\|([1-9]+)\|(UpdatePanel)\|(updatePanel1|updatePanel2)\|([^|]*) 

regex demo

[^|]* 패턴이 | 이외의 0 개 이상의 문자와 일치집니다. 따라서 마지막에는 \|을 사용할 필요가 없습니다.

(updatePanel1|updatePanel2) 부분을 (updatePanel[12]) 또는 심지어 (updatePanel\d+)으로 축소 할 수 있습니다.

+1

괜찮습니다. 분 전에 대답을 받아 들일 수 있습니다. – user66875