정규식 OR 연산자를 사용하여 두 조건 해결
OR 연산자를 사용하여 정규식 두 개를 1로 결합하려고 합니다.|
한 글자가 일치하는지 확인하고 그 뒤에 8자리 숫자가 있는지 확인하는 것이 있습니다.
Regex.IsMatch(s, "^[A-Z]\d{8}$")
나는 단지 9자리 숫자를 확인하는 또 다른 것은 다음과 같습니다.
Regex.IsMatch(s, "^\d{9}$")
이제 다음을 수행하는 대신:
If Not Regex.IsMatch(s, "^[A-Z]\d{8}$") AndAlso
Not Regex.IsMatch(s, "^\d{9}$") Then
...
End If
저는 간단하게 할 수 있다고 생각했습니다.
If Not Regex.IsMatch(s, "^[A-Z]\d{8}|\d{9}$") Then
...
End If
분명히 나는 두 가지를 정확하게 조합하지 못하고 있고 규칙적인 표현을 잘 못합니다.어떤 도움이라도 주시면 감사하겠습니다.
그리고 궁금해하시는 분들을 위해 2가지 조건과 정규식 이상을 결합하는 방법을 살펴보았는데 아직도 머리를 긁적이고 있습니다.
그|
연산자의 우선 순위가 높고 원래 정규식에서 먼저 적용됩니다.우선 순위를 명확히 하려면 두 정규식의 w/그룹화 괄호를 결합해야 합니다.다음과 같이:
"^(([A-Z]\d{8})|(\d{9}))$"
를 사용하는 것은 어떻습니까?^[A-Z0-9]\d{8}$
?
조건을 그룹화하고 싶은 것 같습니다.
Regex.IsMatch(s, "^(([A-Z]\d{8})|(\d{9}))$")
^과 $는 줄의 시작과 끝을 나타내므로 또는 조건으로 간주하지 않습니다.부모님은 "이 부모님의 모든 것" 또는 "이 다른 부모님의 모든 것"에 대해 명시적으로 말할 수 있도록 해줍니다.
@MikeC의 제품은 최고인 것 같습니다.
^[A-Z0-9]\d{8}$
...하지만 당신의 표현이 당신이 기대하는 것처럼 작동하지 않는 이유에 대해 당신은 이해해야 합니다.|
"또는" 또는 "대체" 연산자는 매우 높은 우선 순위를 가지고 있습니다. 유일하게 더 높은 연산자는 그룹화 구성이라고 생각합니다.예제를 사용하는 경우:
^[A-Z]\d{8}|\d{9}$
...기본적으로 "문자열의 시작, 대문자, 8자리 일치" 또는 "문자열의 시작, 8자리 일치" 또는 "문자열의 끝, 8자리 일치" 또는 "문자열의 끝, 9자리 일치"를 의미하는 경우 다음 중 하나를 사용합니다.
^([A-Z]\d{8}|\d{9})$
^[A-Z]\d{8}$|^\d{9}$
이것이 당신의 이해에 도움이 되기를 바랍니다.
내가 찾은 것은OR
연산자도 가끔 약간 이상합니다. 제가 하는 일은 그룹을 사용하여 일치시킬 섹션을 표시하기 때문에 정규식은 다음과 같습니다.^(([A-Z]\d{8})|(\d{9}))$
언급URL : https://stackoverflow.com/questions/10094534/using-regex-or-operator-to-solve-2-conditions
'programing' 카테고리의 다른 글
셸의 가변 보간 (0) | 2023.05.22 |
---|---|
흐릿한 오버레이 보기 만들기 (0) | 2023.05.22 |
작업 빌드.어셈블리에서 CSC 작업을 로드할 수 없습니까? (0) | 2023.05.22 |
하나의 요소에 여러 템플릿 바인딩을 각도로 적용하는 방법 (0) | 2023.05.22 |
왜 우리는 래빗과 같은 메시지 브로커가 필요합니까?PostgreSQL과 같은 데이터베이스를 통한 MQ? (0) | 2023.05.22 |