일상을 포함하지 않는 정규식
이 질문에 이미 답변이 있습니다.
이런거 있어요
aabbabcaabda
래핑 최소한의 그룹을 선택하는 나는이가 잘 작동하는을/a([^a]*)a/
나는 그러나 작동하지 않는 것과 같은 것을 필요로 하는 AA로 래핑 된 그룹에 문제가 있으며 , 원하지 내가 /aa([^aa]*)aa/
않는 의/aa([^a]*)aa/
첫-th 발생에서 끝날 것이기 때문에 같은 첫-th 것을 사용할 수 없습니다. .
으로 일반적 문자 를 포함하지 않는다고 말할 수있는 것과 같은 방법으로 문자열 을 포함하지 않는다고 말하는 방법이 있습니까?[^a]
간단하게 내가 원하는 말했다 AA 시퀀스를 사용하는 모든 문자 AA 다음으로 끝 AA
일반적으로 보다 많은 것을 포함 하지 않는 정규식을 작성하는 고통 스럽습니다. 계산 모델에 대해 작업을 수행해야합니다. 정의하기 쉬운 NFA를 다음 정규 도구로 줄입니다. "고양이"를 포함하지 않는 것에 대한 표현은 약 80 자 정도였습니다.
편집 : 방금 끝냈고 예, 다음과 가능합니다.
aa([^a] | a[^a])aa
다음 은 매우 간단한 안내입니다. 좋은 전에 찾았지만 더 이상 볼 수 없습니다.
구글 힘으로의 특정 하위 문자열을 포함 하지 않는 문자열과 일치 여부하는 다음 정규식을 제공하는 2007 블로그 게시물을의 발견 했습니다 .
^((?!my string).)*$
다음과 같이 작동합니다. (?!-부정적 예견) 0 개 이상의 (*) 문자 (.)를 전체적으로 시작하지 않는 ^를 사용하여 다음 문자로 구성되어야합니다. 및 $ 앵커). 또는 다른 방법으로 말하면 :
전체 최소 문자로 구성되어야합니다. 즉, 패키지에 주어진 하위 패키지가 포함되지 않음을 의미합니다.
당신이 필요로하는 것은 마지 못한 수량 자입니다.
regex: /aa.*?aa/
aabbabcaabda => aabbabcaa
aaaaaabda => aaaa
aabbabcaabda => aabbabcaa
aababaaaabdaa => aababaa, aabdaa
예견도 사용할 수 있습니다. 또한 gpojd가 만든 것보다 약간 까다 롭습니다. 점이 다음 문자를 사용하도록 허용되기 전에 각 위치에 예견을 적용해야합니다.
/aa(?:(?!aa).)*aa/
Claudiu와 finnw가 제안한 접근 방식은 센티넬 고도가 2 자 길이 일 때도 문제없이 작동하지만 (Clauudiu가 인정했듯이) 긴 인터페이스는 너무 다루기 어렵습니다.
/aa([^a]|a[^a])*aa/
나는 그것이 표준 구조인지 확신하지 못하지만, "negative lookahead"(따옴표없이 "?!"라고 쓴다)를보고 생각합니다. 수락의 답변을 포함이 수락의 모든 답변을 포함하여.
예 : 정규식 : "^ (?! 123) [0-9] * \ w" "이 자리"가 123 인 경우를 제외하고 문자로 시작하는 모든 숫자를 사용합니다.
http://msdn.microsoft.com/en-us/library/az24scfc%28v=vs.110%29.aspx#grouping_constructs(Microsoft 페이지이지만 그렇습니다 임) : 예견 / 예상
추신 : 그것은 나를 위해 잘 작동합니다 (.Net). 하지만 내가 틀렸다면 알려주세요. 나는이 구조가 매우 간단하고 그것이 알기 때문에 받아 들여진 대답에 놀랐습니다.
다음 코드는 하나를 제외하고 JS 파일에 대한 모든 참조에 GET 변수를 추가해야합니다.
<link rel="stylesheet" type="text/css" href="/login/css/ABC.css" />
<script type="text/javascript" language="javascript" src="/localization/DEF.js"></script>
<script type="text/javascript" language="javascript" src="/login/jslib/GHI.js"></script>
<script type="text/javascript" language="javascript" src="/login/jslib/md5.js"></script>
sendRequest('/application/srvc/EXCEPTION.js', handleChallengeResponse, null);
sendRequest('/application/srvc/EXCEPTION.js",handleChallengeResponse, null);
다음은 사용되는 Matcher입니다.
(?<!EXCEPTION)(\.js)
".js"의 모든 항목을 찾고 "EXCEPTION"문자열이 앞에 오면 결과 배열에서 해당 결과를 버립니다. 이를 부정적인 룩백이라고합니다. 이렇게하는 방법을 찾는 데 하루를 보냈기 때문에 공유해야한다고 생각했습니다.
".*[^(\\.inc)]\\.ftl$"
Java에서는 ".ftl"로 끝나지만 ".inc.ftl"로 끝나지 않는 모든 파일을 찾을 수 있습니다. 이것이 바로 제가 원했던 것입니다.
참고 URL : https://stackoverflow.com/questions/717644/regular-expression-that-doesnt-contain-certain-string
'ProgramingTip' 카테고리의 다른 글
일상 벡터에서 숫자 추출 (0) | 2020.10.15 |
---|---|
React Native 프로젝트의 이름을 바꾸시겠습니까? (0) | 2020.10.15 |
Django Generic Views에 로그인을 요구하는 방법은 무엇입니까? (0) | 2020.10.15 |
UIView- 뷰가로드 될 때 알림을받는 방법은 무엇입니까? (0) | 2020.10.15 |
JavaScript 값이 "정수"인지 확인 받았습니까? (0) | 2020.10.15 |