특정 문자열 상수를 제외하는 RegEx
이 질문에는 이미 답변이 있습니다.
- 단어 29 개가 포함되지 않은 행과 일치하는 정규식
정규 표현식을 사용하여 특정 문자열 상수를 제외한 모든 문자열을 일치시킬 수 있습니까? "ABC"라고 말합니까? 하나의 특정 문자열 상수 만 제외 할 수 있습니까? 미리 도와 주셔서 감사합니다.
네거티브 미리보기 어설 션을 사용해야합니다.
(?!^ABC$)
예를 들어 다음을 사용할 수 있습니다.
(?!^ABC$)(^.*$)
이것이 편집기에서 작동하지 않으면 시도하십시오. 루비와 자바 스크립트에서 작동하도록 테스트되었습니다.
^((?!ABC).)*$
.NET에서는 그룹화를 다음과 같은 이점으로 사용할 수 있습니다.
http://regexhero.net/tester/?id=65b32601-2326-4ece-912b-6dcefd883f31
당신은 그것을 알 수 있습니다 :
(ABC)|(.)
두 번째 그룹에서 ABC를 제외한 모든 것을 가져옵니다. 괄호는 각 그룹을 둘러 쌉니다. 따라서 (ABC)는 그룹 1이고 (.)는 그룹 2입니다.
따라서 다음과 같이 두 번째 그룹을 교체하십시오.
$2
또는 .NET에서 Regex 클래스 내부의 Groups 컬렉션을 살펴보면 약간의 제어가 가능합니다.
대부분의 다른 정규식 구현에서도 비슷한 작업을 수행 할 수 있어야합니다.
업데이트 : 나는 이것을하는 훨씬 빠른 방법을 찾았습니다 : http://regexhero.net/tester/?id=997ce4a2-878c-41f2-9d28-34e0c5080e03
여전히 그룹화를 사용합니다 (그룹화를 사용하지 않는 방법을 찾을 수 없음). 그러나이 방법은 첫 번째 방법보다 10 배 이상 빠릅니다.
부정적인 예견이나 다음과 같은 것을 사용할 수 있습니다.
^([^A]|A([^B]|B([^C]|$)|$)|$).*$
어쩌면 조금 단순화 될 수 있습니다.
정규 표현식 엔진이 특별한 지원을하지 않는 한 쉽지 않습니다. 가장 쉬운 방법은 부정 일치 옵션을 사용하는 것입니다. 예를 들면 다음과 같습니다.
$var !~ /^foo$/
or die "too much foo";
그렇지 않다면 악한 일을해야합니다.
$var =~ /^(($)|([^f].*)|(f[^o].*)|(fo[^o].*)|(foo.+))$/
or die "too much foo";
그 말은 기본적으로 "비-로 시작 f
하면 나머지는 무엇이든 될 수 있고 f
, 비-로 시작 o
하면 나머지는 무엇이든 될 수 있습니다. 그렇지 않으면 시작 fo
하면 다음 문자는 다른 것이 아닙니다 o
."
이 정규 표현식을 사용해보십시오.
^(.{0,2}|([^A]..|A[^B].|AB[^C])|.{4,})$
세 가지 경우를 설명합니다.
- 임의의 3 자 미만
- 정확히 3 자,
- 첫 번째가 아니
A
거나 - 첫 번째는
A
이지만 두 번째는 그렇지B
않거나 - 첫 번째는
A
두 번째B
이지만 세 번째는 그렇지 않습니다C
- 첫 번째가 아니
- 3 개 이상의 임의의 문자
참고 URL : https://stackoverflow.com/questions/1395177/regex-to-exclude-a-specific-string-constant
'IT박스' 카테고리의 다른 글
ko.utils.unwrapObservable을 언제 사용해야합니까? (0) | 2020.07.29 |
---|---|
왜 항상 ./configure; (0) | 2020.07.29 |
팬더 조인 문제 : 열이 겹치지 만 접미사가 지정되지 않았습니다. (0) | 2020.07.29 |
Windows Azure : 웹 역할, 작업자 역할 및 VM 역할이란 무엇입니까? (0) | 2020.07.29 |
jQuery로 요소 컨텐츠 변경 감지 (0) | 2020.07.29 |