programing

문자열에 하위 문자열이 포함되어 있는지 확인

nasanasas 2020. 8. 14. 07:50
반응형

문자열에 하위 문자열이 포함되어 있는지 확인


Perl을 사용하여 주어진 문자열에 특정 하위 문자열이 포함되어 있는지 어떻게 확인할 수 있습니까?

더 구체적으로, s1.domain.com주어진 문자열 변수에 존재 하는지 확인하고 싶습니다 .


문자열에 하위 문자열이 포함되어 있는지 확인하려면 index함수를 사용할 수 있습니다 .

if (index($str, $substr) != -1) {
    print "$str contains $substr\n";
} 

$substrin 의 첫 번째 발생 위치를 반환 $str하거나 하위 문자열을 찾을 수없는 경우 -1을 반환합니다.


또 다른 가능성은 Perl이 유명한 정규 표현식 을 사용 하는 것입니다.

if ($mystring =~ /s1\.domain\.com/) {
   print qq("$mystring" contains "s1.domain.com"\n);
}

백 슬래시는 .모든 문자와 일치 할 수 있으므로 필요 합니다. \Q\E연산자 를 사용하여이 문제를 해결할 수 있습니다 .

my $substring = "s1.domain.com";
    if ($mystring =~ /\Q$substring\E/) {
   print qq("$mystring" contains "$substring"\n);
}

또는 eugene y가 언급 한대로 수행 하고 index 함수를 사용할 있습니다. 경고 한마디 : Index는 또는 -1대신 일치하는 항목을 찾을 수 없을 때 a를 반환합니다 .undef0

따라서 이것은 오류입니다.

my $substring = "s1.domain.com";
if (not index($mystring, $substr)) {
    print qq("$mystring" doesn't contains "$substring"\n";
} 

s1.domain.com문자열의 시작 부분에 있으면 잘못된 것 입니다. 나는 개인적으로 이것에 두 번 이상 불에 탔다.


대소 문자를 구분하지 않는 하위 문자열 예

이것은 하위 문자열을 확인하기 전에 문자열을 소문자로 변환하는 Eugene의 답변의 확장입니다.

if (index(lc($str), lc($substr)) != -1) {
    print "$str contains $substr\n";
} 

참고 URL : https://stackoverflow.com/questions/7283274/check-whether-a-string-contains-a-substring

반응형