문제

.NET 정규식을 사용하여 다음과 같은 문자열을 구문 분석하려고합니다. 라코 디스

그리고 Split을 사용하여 다음을 반환합니다. H3Y5NC8E TGA5B6SB 2NVAQ4E0

특정 문자 집합에 대해 각 문자의 유효성을 검사하므로 ( 'I', 'O', 'U'및 'W'문자가 없음) string.Split을 사용하는 것은 옵션이 아닙니다. 각 그룹의 문자 수는 다를 수 있으며 그룹 수도 다를 수 있습니다. 다음 표현식을 사용하고 있습니다. 라코 디스

각각 8 자씩 정확히 3 개 그룹과 일치합니다. 어느 정도라도 경기에서 실패합니다. 이것은 입력과 올바르게 일치하는 한 작동합니다. 그러나 Split 메서드를 사용하여 각 문자 그룹을 추출하면 최종 그룹을 얻습니다. RegexBuddy는 캡처 그룹 자체를 반복했으며 반복 된 그룹 주위에 캡처 그룹을 배치해야한다고 불평합니다. 그러나이 작업을 수행하려는 시도 중 어느 것도 원하는 결과를 얻지 못했습니다. 나는 다음과 같은 표현을 시도 해왔다 : 라코 디스

그러나 이것은 작동하지 않습니다.

코드에서 정규식을 생성했기 때문에 그룹 수만큼 확장 할 수 있었지만 더 우아한 솔루션을 원했습니다. <시간>

문자 집합에는 전체 알파벳이 포함되지 않습니다. 제품 활성화 시스템의 일부입니다. 따라서 실수로 숫자 나 다른 문자로 해석 될 수있는 모든 문자는 제거됩니다. 예 : 문자 'I', 'O', 'U', 'W'는 문자 집합에 없습니다.

하이픈은 사용자가 맨 위에 입력 할 필요가 없기 때문에 선택 사항이지만 사용자가 복사 및 붙여 넣기를 완료하면 거기에있을 수 있습니다.

도움이 되었습니까?

해결책 2

내가 원하는 답을 찾았습니다.내 작업 코드는 다음과 같습니다. 라코 디스

다른 팁

BTW, [ABCDEFGHJKLMNPQRSTVXYZ0123456789] 문자 클래스를 더 읽기 쉬운 감산 문자 클래스로 바꿀 수 있습니다. 라코 디스

그렇게 3 개의 그룹을 일치시키고 싶다면 정규식에서이 패턴을 3 번 사용하고 캡처 된 1, 2, 3 개의 하위 그룹을 사용하여 새 문자열을 구성하는 것이 어떻습니까? 라코 디스

PHP에서는 반환합니다 (.NET을 모릅니다) 라코 디스

귀하의 질문과 답변을 검토 한 결과 다음과 같은 결과를 얻었습니다. 라코 디스

"-"는 선택 사항이므로 포함 할 필요가 없습니다.마지막에 {4}를 무엇에 사용했는지 잘 모르겠습니까?그러면 원하는 항목에 따라 일치하는 항목을 찾은 다음 MatchCollection을 사용하여 각 일치 항목에 액세스하여 문자열을 다시 작성할 수 있습니다.

Regex를 사용하는 이유는 무엇입니까?그룹이 항상-로 분할되면 Split ()을 사용할 수 없습니까?

이게 의도 한 것이 아니라면 죄송하지만 문자열에 항상 그룹을 구분하는 하이픈이 있으면 정규식을 사용하는 대신 String.Split () 메서드를 사용할 수 없습니까? 라코 디스

유효한 블록의 특징은 무엇입니까?정말 도움이 되려면 그것을 알아야합니다.

내 일반적인 제안, 첫 번째 단계에서 문자 집합의 유효성을 검사 한 다음 예상 한대로 별도의 방법으로 분할하고 구문 분석합니다.이것이 웹 사이트 / 앱에있는 경우 프런트 엔드에서 ASP Regex 유효성 검사를 사용한 다음 백 엔드에서 분리 할 수 있습니다.

group (i) .value를 사용하여 그룹의 값을 확인하는 경우 마지막 값만 얻을 수 있습니다.그러나 해당 그룹이 캡처 된 모든 시간을 열거하려면 아래와 같이 group (2) .captures (i) .value를 사용합니다. 라코 디스

마이크

캐릭터 그룹 내에서 원하는 문자 세트를 사용할 수 있습니다.모든 그룹을 캡처하려면 "+"수정자를 추가하기 만하면됩니다.내 이전 답변을 참조하고 [A-Z0-9]를 필요한 것으로 변경하십시오 (예 : [ABCDEFGHJKLMNPQRSTVXYZ0123456789]).

다음 패턴을 사용할 수 있습니다. 라코 디스

그러나 결과 배열에서 빈 문자열을 필터링해야합니다. MSDN 의 인용 : <인용구>

여러 일치 항목이 서로 인접하면 빈 문자열이 배열에 삽입됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top