[regex] 문자열의 정확한 일치를위한 정규식
정규식으로 두 암호를 일치시키고 싶습니다. 예를 들어 두 개의 입력 “123456”과 “1234567”이 있으면 결과가 일치하지 않아야합니다 (거짓). 그리고 “123456”과 “123456”을 입력하면 결과가 일치해야합니다 (true).
나는 표현을 할 수 없었다. 어떻게합니까?
답변
변수에 입력 암호가 있고 정확히 123456을 일치 시키려면 앵커가 도움이 될 것입니다.
/^123456$/
펄에서 암호와 일치하는 테스트는 다음과 같습니다.
print "MATCH_OK" if ($input_pass=~/^123456$/);
편집하다:
bart kiers 는 tho입니다. 왜 strcmp ()를 사용하지 않습니까? 모든 언어에는 고유 한 방식이 있습니다
두 번째로 더 안전한 인증 메커니즘을 고려할 수 있습니다. 🙂
답변
malfaux의 대답에서 ‘^’ 과 ‘$’ 는 텍스트의 시작과 끝을 감지하는 데 사용되었습니다.
이들은 일반적으로 줄의 시작과 끝을 감지하는 데 사용됩니다.
그러나이 경우 올바른 방법 일 수 있습니다.
그러나 정확한 단어를 찾으려면 ‘\ b’ 를 사용하는 것이 더 우아한 방법입니다 . 이 경우 다음 패턴은 정확한 문구 ‘123456’과 일치합니다.
/ \ b123456 \ b /
답변
(?<![\w\d])abc(?![\w\d])
이렇게하면 일치 항목 앞에 일부 문자, 숫자 또는 밑줄이 표시되지 않고 바로 문자 또는 숫자 또는 밑줄이 표시되지 않습니다
“abc”, “abc.”, “abc”의 “abc”와 일치하지만 “4abc”또는 “abcde”와는 일치하지 않습니다.
답변
보다 직접적인 방법은 평등을 확인하는 것입니다
if string1 == string2
puts "match"
else
puts "not match"
end
그러나 정규식을 고수하고 싶다면
string1 =~ /^123456$/
답변
키워드의 시작과 끝에 공백을 추가 할 수도 있습니다 : /\s+123456\s+/i
.