내로 시작하지 않는 정규식 일치 문자열
PMD의 경우 저로 시작하는 추악한 변수에 대해 경고하는 규칙을 갖고 싶습니다. 이것은 my로 시작하지 않는 모든 변수를 허용해야 함을 의미합니다.
따라서 다음과 같이 작동하는 RegEx (re)가 필요합니다.
re.match('myVar') == false
re.match('manager') == true
re.match('thisIsMyVar') == true
re.match('myOtherVar') == false
re.match('stuff') == true
나는 다른 것을 시도했지만 (나중에 여기에 나열합니다. 죄송합니다. 지금은 액세스 할 수 없습니다) 아직 작동하지 않습니다.
다른 사람들이 제안한 것처럼 미리보기 주장을 사용할 수 있습니다. 또는 기본 정규식 구문을 사용하려는 경우 :
^(.?$|[^m].+|m[^y].*)
이것은 0 또는 1 자 길이 ( ^.?$
) 인 문자열과 일치 하므로 my
. 또는 두 개 이상의 문자가있는 문자열은 첫 번째 문자가 m
더 이상 문자 가 아닐 때 ( ^[^m].+
); 또는 첫 번째 문자가 a m
이면 뒤에 y
( ^m[^y]
)가 올 수 없습니다.
^(?!my)\w+$
작동해야합니다.
먼저 my
문자열의 시작 부분에서 일치 할 수 없는지 확인한 다음 문자열 끝까지 영숫자 문자를 일치시킵니다. 문자열의 아무 곳에 나 공백이 있으면 정규식이 실패합니다. 입력에 따라 정규식에 전달하기 전에 문자열의 앞뒤에있는 공백을 제거하거나 ^\s*(?!my)(\w+)\s*$
. 과 같은 정규식에 선택적 공백 매처를 추가 할 수 있습니다. 이 경우 역 참조 1에는 변수 이름이 포함됩니다.
그리고 당신은 문자의 특정 그룹과의 변수 이름의 시작은 말할 수 있도록해야하는 경우 [A-Za-z_]
, 사용
^(?!my)[A-Za-z_]\w*$
에서 +
로 변경된 것을 확인하십시오 *
.
/^(?!my).*/
(?!expression)
부정적인 예견입니다. 해당 위치에서 시작하여 일치 expression
하지 않는 위치와 일치합니다 .
허용 할 문자열을 찾기 위해 음수를 일치시키는 것보다 긍정적 인 일치를 수행하고 해당 문자열을 거부하는 것이 훨씬 더 읽기 쉬울까요?
/^my/
참고 URL : https://stackoverflow.com/questions/2116328/regexp-matching-string-not-starting-with-my
'Development Tip' 카테고리의 다른 글
Visual Studio의 솔루션에서 * 모든 * Nuget 패키지를 제거하는 방법 (0) | 2020.10.22 |
---|---|
PHP 변수에서 공백을 제거하려면 어떻게해야합니까? (0) | 2020.10.22 |
forEach 루프의 배열에서 요소를 제거하는 방법은 무엇입니까? (0) | 2020.10.22 |
응용 프로그램 디렉토리 가져 오기 (0) | 2020.10.22 |
소켓 파일을 열 수없는 jmap 실행 (0) | 2020.10.22 |