strfind
다른 문자열 내에서 문자열 찾기
설명
은 k
= strfind(str
,pat
,'ForceCellOutput',cellOutput
)str
이 문자형 벡터인 경우에도 cellOutput
이 true이면 strfind
가 k
를 셀형 배열로 반환하도록 합니다.
예제
문자형 벡터에서 부분문자열 찾기
문자형 벡터에서 부분문자열의 시작 인덱스를 찾습니다.
먼저, 문자형 벡터를 만듭니다.
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
입력 인수
str
— 입력 텍스트
string형 배열 | 문자형 벡터 | 문자형 벡터로 구성된 셀형 배열
입력 텍스트로, string형 배열, 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.
pat
— 검색 패턴
string형 스칼라 | 문자형 벡터 | pattern
스칼라(R2020b 이상)
검색 패턴으로, 다음 중 하나로 지정됩니다.
string형 스칼라
문자형 벡터
pattern
스칼라(R2020b 이상)
cellOutput
— 출력값을 강제로 셀형 배열로 반환할지에 대한 표시자
false
(디폴트 값) | true
| 0
| 1
출력값을 강제로 셀형 배열로 반환할지에 대한 표시자로, false
, true
, 0
, 1
중 하나로 지정됩니다.
출력 인수
팁
pat
가 문자가 없는 문자형 벡터(''
)이거나 문자가 없는 string형 스칼라(""
)인 경우strfind
는 빈 배열을 반환하게 됩니다.string형 배열 내의 패턴을 검색하는 데는
contains
함수를 사용하는 것이 좋습니다.
확장 기능
tall형 배열
메모리에 담을 수 없을 정도로 많은 행을 가진 배열을 계산할 수 있습니다.
사용법 관련 참고 및 제한 사항:
텍스트 입력은 string형으로 구성된 tall형 배열이거나 문자형 벡터로 구성된 tall형 셀형 배열이어야 합니다.
패턴 입력값은 단일 문자열이어야 하며 tall형 배열이나 pattern 객체가 아니어야 합니다.
출력값은 입력 문자열당 하나의 요소를 가지는 인덱스 벡터로 구성된 tall형 셀형 배열입니다.
자세한 내용은 tall형 배열 항목을 참조하십시오.
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
str
은 string형 스칼라이거나 문자형 벡터여야 합니다.생성된 코드는 빈 출력값을 1×0 문자형 배열로 반환합니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
사용법 관련 참고 및 제한 사항:
str
은 string형 배열이거나 문자형 벡터로 구성된 셀형 배열이어야 합니다.
자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)