Main Content

strfind

다른 문자열 내에서 문자열 찾기

설명

예제

k = strfind(str,pat)str에서 pat가 검색되는 경우를 검색합니다. 출력 인수 kstr에서 검색된 각 pat의 시작 인덱스를 나타냅니다. pat를 찾을 수 없으면 strfind는 빈 배열 []을 반환합니다. strfind 함수는 대/소문자를 구분하여 검색을 실행합니다.

  • str이 문자형 벡터나 string형 스칼라이면 strfinddouble형의 벡터를 반환합니다.

  • str이 문자형 벡터로 구성된 셀형 배열이나 string형 배열이면 strfinddouble형의 벡터로 구성된 셀형 배열을 반환합니다.

예제

k = strfind(str,pat,'ForceCellOutput',cellOutput)str이 문자형 벡터인 경우에도 cellOutput이 true이면 strfindk를 셀형 배열로 반환하도록 합니다.

예제

모두 축소

문자형 벡터에서 부분문자열의 시작 인덱스를 찾습니다.

먼저, 문자형 벡터를 만듭니다.

str = 'Find the starting indices of substrings in a character vector';

부분문자열 in을 찾습니다.

k = strfind(str,'in')
k = 1×5

     2    15    19    36    41

str에는 5개 있습니다.

부분문자열 In을 찾습니다.

k = strfind(str,'In')
k =

     []

strfind는 대/소문자를 구분하므로, 이와 일치하는 부분문자열을 찾을 수 없어 k는 빈 배열이 됩니다.

str에서 공백을 찾습니다.

k = strfind(str,' ')
k = 1×9

     5     9    18    26    29    40    43    45    55

str에는 10개의 공백이 있습니다.

R2020b 이상

문자형 벡터를 만듭니다.

str = 'Find the letters.'
str = 
'Find the letters.'

lettersPattern 함수를 사용하여 문자 시퀀스와 일치하는 패턴을 만듭니다.

pat = lettersPattern
pat = pattern
  Matching:

    lettersPattern

각 문자의 인덱스를 찾습니다. pat는 임의의 길이를 갖는 문자 시퀀스의 일치 여부를 확인하고, 반면 strfind는 일치하는 시퀀스를 찾는 즉시 중지한 후 다음 일치 항목으로 진행합니다. 예를 들어, 일치 여부를 확인할 문자의 개수가 지정되어 있지 않으므로 'Find''F'는 둘 다 lettersPattern의 일치하는 결과입니다. 그러나 strfind는 먼저 'F'를 일치하는 결과로 찾아서 그 인덱스를 반환합니다. 그런 다음 strfind'i'를 일치하는 결과로 찾는 식입니다. (일치 여부를 확인할 문자의 개수를 지정하는 선택적 인수를 포함하여 lettersPattern을 호출할 수 있습니다.)

k = strfind(str,pat)
k = 1×14

     1     2     3     4     6     7     8    10    11    12    13    14    15    16

단어의 시작을 찾으려면 경계를 포함하여 lettersPattern을 호출하십시오. letterBoundary 함수는 문자와 비문자 사이의 경계가 일치하는지 여부를 확인합니다.

pat = letterBoundary + lettersPattern
pat = pattern
  Matching:

    letterBoundary + lettersPattern

k = strfind(str,pat)
k = 1×3

     1     6    10

pattern 객체를 만드는 함수 목록은 pattern 항목을 참조하십시오.

문자형 벡터로 구성된 셀형 배열에서 부분문자열의 시작 인덱스를 찾습니다.

문자형 벡터로 구성된 셀형 배열을 만듭니다.

str = {'How much wood would a woodchuck chuck';
       'if a woodchuck could chuck wood?'};

str에서 wood를 찾습니다.

idx = strfind(str,'wood')
idx=2×1 cell array
    {[10 23]}
    {[ 6 28]}

출력 셀형 배열을 검토하여 wood가 검색되는 경우를 찾습니다.

idx{:,:}
ans = 1×2

    10    23

ans = 1×2

     6    28

부분문자열 wood는 첫 번째 문자형 벡터의 인덱스 10과 23, 그리고 두 번째 문자형 벡터의 인덱스 6과 28에 있습니다.

문자형 벡터에서 특정 부분문자열을 모두 찾습니다. strfind가 이 패턴의 검색 건에 대한 인덱스를 셀형 배열로 강제 반환하도록 합니다. 그런 다음 인덱스를 표시합니다.

문자형 벡터를 만든 다음, 여기에서 패턴 ain을 모두 찾습니다.

str = 'The rain in Spain.';
k = strfind(str,'ain','ForceCellOutput',true)
k = 1x1 cell array
    {[6 15]}

strfind는 숫자형 배열이 포함된 스칼라 셀을 반환하며, 이 숫자형 배열은 str에서 부분문자열 ain의 검색 건에 대한 인덱스를 포함합니다. 셀 내의 숫자형 배열에 액세스하려면 중괄호를 사용하십시오.

k{1}
ans = 1×2

     6    15

입력 인수

모두 축소

입력 텍스트로, string형 배열, 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.

검색 패턴으로, 다음 중 하나로 지정됩니다.

  • string형 스칼라

  • 문자형 벡터

  • pattern 스칼라(R2020b 이상)

출력값을 강제로 셀형 배열로 반환할지에 대한 표시자로, false, true, 0, 1 중 하나로 지정됩니다.

출력 인수

모두 축소

검색된 pat의 인덱스로, 배열로 반환됩니다. pat를 찾을 수 없으면 k는 빈 배열 []입니다.

  • str이 문자형 벡터나 string형 스칼라이면 kpat의 각 검색 건의 인덱스를 나타내는 double형 벡터입니다.

  • str이 문자형 벡터로 구성된 셀형 배열이나 string형 배열이면 k는 셀형 배열입니다. str의 각 텍스트 조각에 대해, k의 대응하는 셀은 pat의 각 검색 건의 인덱스를 나타내는 double형 벡터를 포함합니다.

  • pat가 문자가 없는 문자형 벡터('')이거나 문자가 없는 string형 스칼라("")인 경우 strfind는 빈 배열을 반환하게 됩니다.

  • string형 배열 내의 패턴을 검색하는 데는 contains 함수를 사용하는 것이 좋습니다.

확장 기능

버전 내역

R2006a 이전에 개발됨