正则表达式
正規表現(大文字小文字を区別する)の一致
構文
説明
は,正規表現で指定した文字パタ,ンと一致するstartIndex
= regexp (str
,表达式
)str
の各部分文字列の開始@ @ンデックスを返します。一致要素がない場合,startIndex
は空配列になります。テキストのオーバーラップする部分と一致する部分文字列がある場合は,最初の一致のインデックスのみが返されます。
[
は,一致するすべての開始aaplンデックスと終了aaplンデックスを返します。startIndex
,endIndex
= regexp(str
,表达式
)
___= regexp (___, ' forceCellOutput ')
は,各出力引数をスカラ,セルとして返します。セルには前述の構文の出力として表される数値配列または部分文字列が含まれます。任意の入力を含めたり,前述の構文から任意の出力を要求することができます。
例
テキスト内でパタ,ンを検索
c
で始まり,t
で終わり,その間に少なくとも1文字以上の母音を含む単語を検索します。
str =“蝙蝠猫可以汽车外套法庭CUT ct cat扫描”;表达=“c(五个母音字母)+ t”;startIndex = regexp(str,表达式)
startIndex =1×25 17
正規表現“c(五个母音字母)+ t”
は次のパタ,ンを指定します。
c
が最初の文字でなければなりません。c
の後には、大かっこ内のいずれかの文字((五个母音字母)
)が続かなければなりません。大かっこ付きのパタ,ンは,
+
演算子の指定により,1回以上発生しなければなりません。t
が最後の文字でなければならず,大かっこで囲まれたパタ,ンとt
の間に文字が存在してはなりません。
startIndex
の値は,正規表現と一致する各単語の最初の文字の。一致する単語猫
は电子邮箱ンデックス5で始まり,外套
はesc escンデックス17で始まります。减少
と猫
という単語は大文字のため,一致しません。
複数のテキスト内でパタ,ンを検索
Cell配列内の文字ベクトルに含まれる大文字とスペ,スの位置を検索します。
STR = {马德里,西班牙,《罗密欧与朱丽叶》,“MATLAB很棒”};capExpr =“[a - z]”;spaceExpr =' \ s ';capStartIndex = regexp(str,capExpr);spaceStartIndex = regexp(str,spaceExpr);
入力str
がcell配列のため,capStartIndex
とspaceStartIndex
もcell配列です。
大文字の@ @ンデックスを表示します。
celldisp (capStartIndex)
capStartIndex{1} = 1 9 capStartIndex{2} = 1 11 capStartIndex{3} = 1 2 3 4 5 6
スペスのンデックスを表示します。
celldisp (spaceStartIndex)
10 . spaceStartIndex{1} = 8 spaceStartIndex{2} = 6 10 spaceStartIndex{3} = 7
匹配キ,ワ,ドを使用して部分文字列を返す
文字x
を含む文字ベクトル内の単語をキャプチャします。
str =“多!regexp函数可以帮助您放松。”;表达=“\ w * x \ w *”;matchStr = regexp(str,表达式,“匹配”)
matchStr =1 x2单元格{“正则表达式”}{'放松'}
正規表現“\ w * x \ w *”
は次の文字ベクトルを指定します。
任意の数の英数字またはアンダスコア文字で始まります(
\ w *
)。文字列は小文字
x
を含んでいます。文字列は
\ w *
で指定されているように,x
の後,文字なしを含む,任意の数の英数字またはアンダ,スコア文字で終了します。
拆分キ、ワ、ドを使用した区切り記号でのテキストの分割
文字ベクトルを複数の部分文字列に分割します。ここで各部分文字列は,^
文字で区切られます。
STR = [“将此文本拆分为几部分”];表达=“\ ^”;splitStr = regexp(str,表达式,“分裂”)
splitStr =1 x3单元格{'分割'}{'此文本分为'}{'几段'}
正規表現ではキャレット記号に特別な意味があるため,キャレット記号の前にエスケープ文字であるバックスラッシュ(\
)を追加します。セミコロンなど別の区切り記号で文字ベクトルを分割する場合,バックスラッシュを含める必要はありません。
一致する部分文字列と一致しない部分文字列を両方とも返す
“匹配”
キ,ワ,ドを使用して正規表現と一致する文字ベクトルの部分をキャプチャし,“分裂”
キ,ワ,ドを使用して一致しない残りの部分をキャプチャします。
str =“她在海边卖贝壳。”;表达=“[Ss] h。”;[match,noMatch] = regexp(str,表达式,“匹配”,“分裂”)
匹配=1 x3单元格{'She'} {'She'} {'sho'}
noMatch =1 x4单元格{0x0 char} {' sell sea'} {'lls by the sea'} {'re.'}
正規表現“[Ss] h。”
は次のことを指定します。
年代
または年代
は最初の文字h
は2番目の文字3番目の文字はドット(
.
)で指定されているように,スペ,スなど任意の文字と一致させることができる
文字ベクトルの最初(または最後)の文字が正規表現と一致する場合,“分裂”
キ,ワ,ドからの最初(または最後)の戻り値は空の文字ベクトルになります。
オプションで,部分文字列から元の文字ベクトルを再構築します。
combinedStr = strjoin(noMatch,match)
combinedStr =“她在海边卖贝壳。”
順序ト,クンを使用した,一致する部分文字列のキャプチャ
正規表現内でト,クンを定義して,htmlタグの名前を検索します。ト,クンはかっこ()
で示されます。
str ='My title 这里是一些文本
';表达=' < (\ w +).*>.*\ 1 > ';[符号,匹配]= regexp(str,表达式,“令牌”,“匹配”);
正規表現< (\ w +).*>.*\ 1 >
は次のパタ,ンを指定します。
< (\ w +)
は,開始山かっことその後に続く1以上の英数字またはアンダスコア文字を検索します。かっこで\ w +
を囲むと,ト,クン内のHTMLタグの名前がキャプチャされます。* >。
はHTML属性など,任意の数の追加文字と,閉じ山かっこを検索します。< / \ 1 >
は最初のトクン(\ 1
で指定)に対応する終了タグを検索します。終了タグの形式は< / tagname >
です。
ト,クンと一致する部分文字列を表示します。
celldisp(令牌)
令牌{1}{1}=标题令牌{2}{1}= p
celldisp(匹配)
matches{1} =My title matches{2} =这里有一些文本
名前付きト,クンを使用した,一致する部分文字列のキャプチャ
次の形式で日付または月のどらかを最初に表示できる日付を解析します。mm / dd / yyyy
またはdd-mm-yyyy
。名前付きト,クンを使って,日付の各部を特定します。
str =“2000年1月11日20-02-2020年3月30日16-04-2020”;表达式= [(? <月> \ d +) /(? <天> \ d +) /(? <年> \ d +) |”...‘(? <天> \ d +) -(? <月> \ d +) -(? <年> \ d +) '];tokenNames = regexp(str,表达式,“名字”);
正規表現は次のパタ,ンを指定します。
(? <名称> \ d +)
は1以上の数値を検索し,。|は論理
或
演算子です。これは日付に使用できるパターンが 2 つあることを意味します。最初のパターンでは、スラッシュ (/
)によりト,クンが分割されます。2番目のパターンでは、ハイフン (-
)によりト,クンが分割されます。
名前付きト,クンを表示します。
为k = 1:length(tokenNames) disp(tokenNames(k))结束
月:“01”日:“11”年:“2000”月:“02”日:“20”年:“2020”月:“03”日:“30”年:“2000”月:“04”日:“16”年:“2020”
大文字小文字を区別しない一致を実行
単語の大文字と小文字の両方の▪▪▪ンスタンスを見▪▪▪けます。
既定では,正则表达式
は大文字小文字を区別する一致を実行します。
str =一个包含大写和小写文本的字符向量;表达=“\ w *案”;matchStr = regexp(str,表达式,“匹配”)
matchStr =1x1单元阵列{“小写”}
正規表現は次の文字ベクトルを指定します。
任意の数の英数字またはアンダスコア文字で始まります(
\ w *
)。文字列はリテラルテキスト(
情况下
)で終了します。
関数regexpi
は正则表达式
と同じ構文を使用しますが,大文字小文字を区別しない一致を実行します。
matchWithRegexpi = regexpi(str,表达式,“匹配”)
matchWithRegexpi =1 x2单元格{“大写”}{“小写”}
別の方法として,“ignorecase”
オプションを使って,正则表达式
の大文字小文字を区別する一致を無効にします。
matchWithIgnorecase = regexp(str,表达式,“匹配”,“ignorecase”)
matchWithIgnorecase =1 x2单元格{“大写”}{“小写”}
複数の表現の場合は,(我)?
検索フラグを使って,選択した表現の大文字小文字を区別する一致を無効にします。
表达式= {“(? -我)\ w *案”;...“(?我)\ w *案”};matchStr = regexp(str,表达式,“匹配”);celldisp (matchStr)
matchStr{1}{1} =小写matchStr{2}{1} =大写matchStr{2}{2} =小写
改行文字を使用したテキストの解析
改行 (\ n
)を含む文字ベクトルを作成し,正規表現を使用して解析します。正则表达式
はmatchStr
を複数行のテキストが格納された细胞配列として返すため,テキストをこの细胞配列から抽出してすべての行を表示することができます。
STR = sprintf(“abc \ n de”);表达=”。*’;matchStr = regexp(str,表达式,“匹配”);matchStr {:}
Ans = 'abc de'
既定では、ドット(.
)は改行を含むすべての文字と一致し,元の文字ベクトルと等価の単一の一致を返します。
“dotexceptnewline”
オプションを使って,一致から改行文字を除外します。これにより,テキストの行ごとに個別の一致が返ります。
matchStrNoNewline = regexp(str,表达式,“匹配”,“dotexceptnewline”)
matchStrNoNewline =1 x2单元格{'abc'} {' de'}
^
または$
のメタ文字と“lineanchors”
オプションを使って,各行の最初または最後の文字を見けます。
表达=“美元”。;lastInLine = regexp(str,表达式,“匹配”,“lineanchors”)
lastInLine =1 x2单元格{' c '}{“e”}
一致をセルに返す
テキスト内で一致を検索し,出力をスカラ,セルに返します。
Cで始まり,tで終わり,その間に1文字以上の母音を含む単語を検索します。開始▪▪ンデックスをスカラ▪▪セルに返します。
str =“蝙蝠猫可以汽车外套法庭CUT ct cat扫描”;表达=“c(五个母音字母)+ t”;startIndex = regexp(str,表达式,“forceCellOutput”)
startIndex =1x1单元阵列{17 [5]}
開始aapl . exeンデックスに数値配列としてアクセスするには,セルのaapl . exeンデックスを指定します。
startIndex {1}
ans =1×25 17
一致および不一致の部分文字列を返します。各出力は個別のスカラ,セルにあります。
[match,noMatch] = regexp(str,表达式,“匹配”,“分裂”,“forceCellOutput”)
匹配=1x1单元阵列{1 x2细胞}
noMatch =1x1单元阵列{1 x3细胞}
一致の配列にアクセスするには,匹配
の@ @ンデックスを指定します。
{1}匹配
ans =1 x2单元格{“猫”}{“外套”}
一致しない部分文字列にアクセスするには,noMatch
の@ @ンデックスを指定します。
noMatch {1}
ans =1 x3单元格{'bat '} {' can car '} {' court CUT ct C…'}
入力引数
str
- - - - - -入力テキスト
文字ベクトル|文字ベクトルのcell配列|字符串配列
入力テキスト。文字ベクトル、文字ベクトルのcell配列または字符串配列として指定します。cell 配列の各文字ベクトルまたは string 配列の各 string は、任意の長さで任意の文字を含めることができます。
str
と表达式
が字符串配列または单元格配列の場合,これらの次元は同じでなければなりません。
デ,タ型:字符串
|字符
|细胞
表达式
- - - - - -正規表現
文字ベクトル|文字ベクトルのcell配列|字符串配列
正規表現。文字ベクトル、文字ベクトルの cell 配列または string 配列として指定します。各式には、文字、メタ文字、演算子、トークンおよびstr
と一致するパタ,ンを指定するフラグを含めることができます。
次の表では,正規表現の要素を説明します。
メタ文字
メタ文字は,文字,文字範囲,桁および空白文字を表しますメタ文字を使用して文字の汎用パタ,ンを構築します。
メタ文字 |
説明 |
例 |
---|---|---|
|
空白を含む任意の単一文字 |
|
|
大かっこ内の任意の文字。次の文字は文字どおり扱われます。 |
|
|
大かっこ内を除く任意の文字。次の文字は文字どおり扱われます。 |
|
|
|
|
|
アルファベット,数字またはアンダ,スコア文字。英語の文字セットでは, |
|
|
アルファベット,数字またはアンダ,スコア以外の任意の文字。英語の文字セットでは, |
|
|
任意の空白文字。 |
|
|
任意の空白文字以外の文字。 |
|
|
任意の数字。 |
|
|
任意の数字以外の文字。 |
|
|
8 進数値 |
|
|
16 進数値 |
|
文字表現
演算子 |
説明 |
---|---|
|
アラ,ム(ビ,プ) |
|
バックスペ,ス |
|
フォ,ムフィ,ド |
|
改行 |
|
キャリッジリタ,ン |
|
水平タブ |
|
垂直タブ |
|
文字どおり一致させる正規表現で特殊な意味をも任意の文字(単一のバックスラッシュに一致させるには |
量指定子
量指定子は,一致するテキスト内でパタ,ンが発生しなければならない回数を指定します。
量指定子 |
表現の出現回数 |
例 |
---|---|---|
|
0回以上の繰り返し。 |
|
|
0回または1回。 |
|
|
1回以上の繰り返し。 |
|
|
|
|
|
|
|
|
正確に
|
|
量指定子は次の表に示すように,3のモドで表示できます。问は前の表の任意の量指定子を表します。
モド |
説明 |
例 |
||||
---|---|---|---|---|---|---|
|
最長一致表現。できるだけ多くの文字と一致します。 |
たとえば,テキスト
|
||||
|
最短一致表現。できるだけ少ない文字と一致します。 |
たとえば,テキスト
|
グル,プ化演算子
グループ化演算子を使用すると,トークンのキャプチャ,1つの演算子の複数の要素への適用または特定グループ内のバックトラッキングを無効にできます。
グル,プ化演算子 |
説明 |
例 |
---|---|---|
|
式の要素をグル,プ化し,ト,クンをキャプチャします。 |
|
|
グル,プ化はしますが,ト,クンはキャプチャしません。 |
グル,プ化を使用しない場合, |
|
アトミックにグル,プ化します。一致を検索するためにグル,プ内のバックトラッキングを実行せず,ト,クンをキャプチャしません。 |
|
|
式
左小かっこの後に |
|
アンカ
式内のアンカ,は,入力テキストまたは単語の最初または最後と一致します。
アンカ |
一致対象 |
例 |
---|---|---|
|
入力テキストの最初。 |
|
|
入力テキストの最後。 |
|
|
単語の最初。 |
|
|
単語の最後。 |
|
前後参照アサ,ション
前後参照アサーションは,目的の一致の直前または直後のパターン(一致の一部ではない)を検索します。
ポンタは現在の位置のままで,测验
式に対応する文字はキャプチャも破棄もされません。このため,前方参照アサ,ションは,オ,バ,ラップしている文字グル,プと一致することがあります。
前後参照アサ,ション |
説明 |
例 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
式の“前に”前方アサ,ションを指定する場合,演算は論理和
と等価になります。
演算 |
説明 |
例 |
---|---|---|
|
|
|
|
|
|
論理演算子と条件演算子
論理演算子と条件演算子を使用すると,特定の条件の状態をテストし,その結果を使用して次に一致するパターン(ある場合)を決定できます。これらの演算子は論理或
および如果
または如果/其他
条件をサポ,トしています。
条件はト,クンの場合もあれば,前方参照演算子または(? @cmd)
という形式の動的表現の場合もあります。動的表現は,論理値または数値を返さなければなりません。
条件演算子 |
説明 |
例 |
---|---|---|
|
式
|
|
|
条件 |
窗户®システムで実行する場合, |
|
条件 |
|
ト,クン演算子
ト,クンは正規表現の一部をかっこで囲んで定義した,一致テキストの一部です。テキスト内のシーケンスによってトークンを参照することも(順序トークン),コードの保守を簡単にしたり,出力を読み取りやすくしたりするために,トークンに名前を割り当てることもできます。
順序ト,クン演算子 |
説明 |
例 |
---|---|---|
|
かっこで囲まれた式と一致する文字をト,クンでキャプチャします。 |
|
|
|
|
|
|
|
名前付きト,クン演算子 |
説明 |
例 |
---|---|---|
|
かっこで囲まれた式と一致する文字を名前付きト,クンでキャプチャします。 |
|
|
|
|
|
名前付きトクンが見かった場合は |
|
メモ
式に入れ子にされたかっこがある場合,matlab®は一番外側のかっこのペアに対応するト,クンをキャプチャします。たとえば”(和(y |奖赏))”
という検索パタ,ンの場合,matlabは“安德鲁”
に対するト,クンを作成しますが,“y”
や“报答”
に対するト,クンは作成しません。
動的正規表現
動的表現を使用すると,MATLABコマンドまたは正規表現を実行して一致するテキストを特定できます。
動的表現を囲む小かっこでは,キャプチャするグル,プを“作成しません”。
演算子 |
説明 |
例 |
---|---|---|
|
解析時、 |
|
|
|
|
|
|
|
動的表現内では,次の演算子を使用して置換テキストを定義します。
置換演算子 |
説明 |
---|---|
|
入力テキストの現在の一致部分 |
|
入力テキストの現在の一致の前にある部分 |
|
入力テキストの現在の一致の後にある部分( |
|
|
|
名前付きト,クン |
|
MATLABで |
コメント
文字 |
説明 |
例 |
---|---|---|
(? #评论) |
正規表現にコメントを挿入します。コメントのテキストは、入力の検索時に無視されます。 |
|
検索フラグ
検索フラグを使用して,一致する式に対する動作を変更します。式内での検索フラグの使用に対する代替案は,选项
入力引数を渡すことです。
フラグ |
説明 |
---|---|
(? -我) |
大文字と小文字を区別します。 |
(我)? |
大文字と小文字を区別しません。 |
(?) |
パタン内のドット( |
(? - s) |
パタ,ン内のドットを改行文字以外の任意の文字と一致させます。 |
(? - m) |
テキストの始めと終わりで |
(?) |
行の始めと終わりで |
(? - x) |
検索時に空白文字とコメントを含めます(既定)。 |
x (?) |
検索時に空白文字とコメントを無視します。空白文字と |
フラグによって修正される式は,かっこの後に
(?我)\ w *
のように表示されるか,かっこの中に表示でき,次のようにコロン(:
)を使ってフラグから切り離すことができます。
(?我:\ w *)
後の構文を使うと,より長い式の一部に対する動作を変更できます。
デ,タ型:字符
|细胞
|字符串
outkey
- - - - - -どの出力を返すかを示すキ,ワ,ド
“开始”
(既定値) |“结束”
|“tokenExtents”
|“匹配”
|“令牌”
|“名字”
|“分裂”
どの出力を返すかを示すキ,ワ,ド。次の文字ベクトルのいずれかとして指定します。
出力キ,ワ,ド |
戻り値 |
---|---|
|
すべての一致の開始escンデックス( |
|
すべての一致の終了escンデックス( |
|
すべてのトクンの開始ンデックスと終了ンデックス |
|
|
|
|
|
各名前付きト,クンの名前とテキスト |
|
|
デ,タ型:字符
|字符串
选项
- - - - - -検索オプション
“一次”
|“警告”
|“ignorecase”
|“emptymatch”
|“dotexceptnewline”
|“lineanchors”
|……
検索オプション。文字ベクトルとして指定します。オプションはペアになっています。既定の動作に対応するオプションが 1 つ、既定をオーバーライドできるオプションが 1 つです。ペアからオプションを 1 つだけ指定します。オプションの順番は任意です。
既定 |
オバラド |
説明 |
---|---|---|
|
|
式をできるだけ多く一致させる(既定)か,1回しか一致させないかを指定します。 |
|
|
警告の非表示(既定)または表示を指定します。 |
|
|
大文字小文字を区別する(既定)か,無視するかを指定します。 |
|
|
長さがゼロの一致を無視する(既定)か,含めるかを指定します。 |
|
|
ドットをなんらかの文字に一致させる(既定)か,改行( |
|
|
|
|
|
検索時に空白文字とコメントを含める(既定)か無視するかを指定します。 |
デ,タ型:字符
|字符串
出力引数
startIndex
-各一致の開始ie浏览器ンデックス
行ベクトル|行ベクトルのcell配列
endIndex
-各一致の終了ie浏览器ンデックス
行ベクトル|行ベクトルのcell配列
出
-一致に関する情報
数値配列| cell配列| string配列|構造体配列
一致に関する情報。数値,セル,字符串または構造体配列として返されます。出力の情報は,次のようにoutkey
に対して指定した値によって決まります。
出力キ,ワ,ド |
出力の説明 |
出力のタ@ @プと次元 |
---|---|---|
|
一致の開始@ @ンデックス |
|
|
一致の終了@ @ンデックス |
|
|
すべてのトクンの開始ンデックスと終了ンデックス |
既定ですべての一致が返される場合:
1の一致しか返さない 特定の@ @ンデックス |
|
|
既定ですべての一致が返される場合:
|
|
|
既定ですべての一致が返される場合:
一致を1のみ返す 特定のインデックスで予測されるトークンが見つからない場合,MATLABはそのトークンに対して空の値,文字ベクトルに対して |
|
各名前付きト,クンの名前とテキスト |
すべての一致に対して:
|
|
|
すべての一致に対して:
|
詳細
トクン
ト,クンは,正規表現に部分的に対応する一致テキストの一部です。ト,クンを作成するには,正規表現の部分をかっこで囲みます。
たとえば,次の表現は日,月,年のト,クンを含め,dd-mmm-yyyy
という形式の日付を検出します。
str =“这是一个日期:2020年4月1日”;表达=”(\ d +) - (\ w +) (\ d +) ';Mydate = regexp(str,表达式,“令牌”);替换{:}
ans = 1×3单元格数组{'01'}{'Apr'} {'2020'}
簡単に識別できるように,ト,クンに名前を関連付けることができます。
str =“这是一个日期:2020年4月1日”;表达=“(? <天> \ d +) -(? <月> \ w +) -(? <年> \ d +) ';Mydate = regexp(str,表达式,“名字”)
mydate = struct with fields:日:'01'月:'Apr'年:'2020'
詳細にいては,正規表現におけるト,クンを参照してください。
アルゴリズム
MATLABは左から右に各入力文字ベクトルまたは字符串を解析し,文字ベクトル内または字符串内のテキストを,正規表現の最初の要素と一致させようとします。このプロセスの実行中,matlabは一致しないすべてのテキストをスキップします。
MATLABが最初の一致を検出すると,表現の2番目の要素との一致がないか解析が継続され,以下同様に処理が行われます。
拡張機能
スレッドベ,スの環境
MATLAB®backgroundPool
を使用してバックグラウンドでコードを実行するか,并行计算工具箱™のThreadPool
を使用してコ,ドを高速化します。
この関数はスレッドベ,スの環境を完全にサポ,トしています。詳細にいては,在线程环境中运行MATLAB函数を参照してください。
バ,ジョン履歴
Matlabコマンド
次のmatlabコマンドに対応するリンクがクリックされました。
コマンドをmatlabコマンドウィンドウに入力して実行してください。Webブラウザ,はMATLABコマンドをサポ,トしていません。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。