2015-02-06 3 views
0

RegEx를 처음 사용하기 때문에 RegEx에 대한 질문이 있습니다. 내 코드를 C#에서 작성 중이며 일치하는 문자열을 찾기위한 정규식이 필요하다.RegEx : 첫 번째 두 문자를 기준으로 일치 항목 찾기

내가이 얻을 문자열의 가능한 조합,

XYZF44DT508755 
ABZF44DT508755 
PQZF44DT508755 

그래서 문자열이 XY 또는 AB 또는 PQ 시작 여부 내가 확인해야합니다.

나는 이걸 생각해 냈지만 작동하지 않습니다.

^((XY|AB|PQ).){2} 

참고 : 나는 일반 문자열 StartsWith()를 사용하지 않으

UPDATE : 지금은이 같은 새로운 일치하는 조건을 시도하려는 경우

-

If string starts with "XY" or "AB" or "PQ" and 3rd character is "Z" and 4th character is "F" 

어떻게 RegEx를 작성 하시겠습니까?

+0

Debuggex Demo? (그 의미는 무엇이라고 생각합니까?) 기존 정규 표현식을 이해하지 않고 수정하려고하는 것 같습니다. 정규식 튜토리얼/소개를 읽는 것이 좋습니다. – ruakh

답변

2

^(XY|AB|PQ) 만 테스트하고 싶습니다. RegEx는 다음을 의미합니다 : XY, AB 또는 PQ를 검색 한 다음 임의의 문자를 검색하고 전체 시퀀스를 두 번 반복합니다. 예를 들어 "XYKPQL"이 RegEx와 일치합니다.
(...)는 정합 기
XY|AB|PQ 일치 XY, AB 또는 PQ 하나를 생성

regex matches

^ 라인의 시작을 강제 :

regex101에 일치하는 화면이다.

다음 두 문자를 ZF로하려면 RegEx에 ZF를 추가하면 ^(XY|AB|PQ)ZF이됩니다.

RegExes를 테스트하는 가장 좋은 방법은 regex101입니다.

+0

내 원래 질문으로 업데이트를 참조하십시오 – donguy76

+0

@ donguy76 이미 내 답변을 업데이트했습니다. – David

3

표현식을 다음과 같이 수정할 수 있으며 IsMatch() 메서드를 사용할 수 있습니다. 따르면

Regex.IsMatch(input, "^(?:XY|AB|PQ)") 

. (단일 문자) 제 문자와 일치하고 있기 때문에 범위 정량 {2} 배의 순서를 반복하려 연동 해 아우터 캡처 그룹 ...

귀하의 업데이트 된 편집, 당신은 단순히 "ZF"를 그룹화 구문 뒤에 배치 할 수 있습니다.

Regex.IsMatch(input, "^(?:XY|AB|PQ)ZF") 
1

올바른 길을 가고있었습니다. ^(XY|AB|PQ)은 문자열을 올바르게 일치해야합니다.

^((XY|AB|PQ).){2}의 문제점은 {2} 인 전체 그룹을 따릅니다. 즉, 정확히 2 번 발생을 의미합니다.첫 번째 2 자의 경우 2 회 발생하며 . (단일 문자)이면 XY_AB_과 같은 문자열을 의미합니다. _은 무엇이든 될 수 있습니다.

큰 문자열과 일치 시키려면 .을 (를) 사용자의 의도로 사용했을 수 있습니다. 이 경우 ^((XY|AB|PQ)\w*) 줄을 따라 시도해 볼 수 있습니다. \w*은 "단어 문자"가 0 번 이상 일치하므로 시작 부분에 XY이 아닌 XYZF44DT508755까지 공백, 줄 바꿈, 문장 부호 등이 모두 일치해야합니다.

regexes를 이해하기위한 몇 가지 유용한 도구가 있습니다. 즐겨 찾는 항목 중 하나는 debuggex입니다.

UPDATE

는 업데이트 된 질문에 대답하려면 :

문자열이 "XY"또는 "AB"또는 "PQ"로 시작하고 3 문자 "Z"이고 4 번째 문자가 "F"인 경우

정규식은 (전체 "단어"와 일치한다고 가정 할 때). ^ ((XY | AB | PQ) ZF \ w *)

Regular expression visualization

당신은`{2}``을 마련 .` 및 는가

관련 문제