도전
유효한 정규 표현식이 주어지면 동일한 문자열 세트와 일치하지만 반대의 정규 표현식을 출력하십시오.
작업
이 문제는 가장 기본적인 정규식 작업을 사용 : ^
, $
, ?
, +
, *
, []
, {}
, |
. 캡처 그룹이나 복잡한 것들과 같은 것은 없습니다. 특수 문자를 이스케이프 처리 할 수 있습니다.
샘플 입력 / 출력
참고 : 유효하지 않은 입력은 제공되지 않으며 일반적으로 주어진 입력에 대해 여러 가지 가능한 답변이 있습니다!
Input | Sample Output
-----------|-------------
abc | cba
tuv? | v?ut
a(b|c) | (c|b)a
1[23] | [23]1
a([bc]|cd) | (dc|[bc])a
^a[^bc]d$ | ^d[^bc]a$
x[yz]{1,2} | [yz]{1,2}x
p{2} | p{2}
q{7,} | q{7,}
\[c[de] | [de]c\[
ab[c | <output undefined>
a(?bc) | <output undefined>
a[]]bc | <output undefined>
데모
올바른 입력 / 출력을 보여주는 실무 데모 . 여기에는 실제 답변에 필요하지 않은 입력의 유효성을 검사하는 추가 논리가 있습니다. 유효하지 않은 입력은 정의되지 않은 동작으로 간주하십시오.
사양
간단하게하기 위해 모든 특수 문자는 특별한 의미를 갖거나 이스케이프 처리됩니다. 즉, [[]
의 문자 범위가 아닙니다 [
. 길이 범위는 표준 POSIX ERE에서 나옵니다. 즉, {n}
, {n,}
, 및 {n,m}
지원됩니다. 문자 범위 []
와 [^]
지원됩니다. 이러한 규칙으로 인해 유효하지 않은 입력이 제공되지 않으므로 이러한 내용을 출력으로 직접 복사하면됩니다. 마지막으로 탐욕은 중요하지 않습니다. 즉, 역 정규 표현식이 다른 일치 항목을 먼저 찾더라도 중요하지 않으며 동일한 문자열 집합에 대한 일치 항목 만 찾으면됩니다.
채점
바이트 단위의 가장 작은 프로그램 (네트워크 요청과 같은 부정 행위 금지)이 이깁니다. 프로그램은 실제 IO를 사용하거나 단순히 함수를 정의 할 수 있습니다.
(^a|b)(c$|d)
테스트 케이스 와 같은 것을 추가하고 싶을 수도 있습니다 .
(a)?(b)+
들어 그룹에 적용되는 한정자를 고려해야 (b)+(a)?
합니까?
()
의 예제에서 사용되는 정규식 작업 목록이 누락되었습니다 .
?
첨부 할 것이 없기 때문 입니다./a(?bc)/
브라우저의 콘솔에 입력하십시오 .