正式式式とは何か 正規表現は,特定の文字とそれらの特定の文字の組み合わせによって,文字列をフィルタリングする論理を表す
規則文字列を構成する.
正式式表現は,以下の目的を達成します.
给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
可以通过正则表达式,从字符串中获取我们想要的特定部分。
簡単な学習のために,まず Regextor をおすすめします. Regextor は正規式を検証するソフトウェアです.
正式式表現は,通常のテキストのみを含み,そのテキストを正確にマッチすることを代表します.例えば:
公式表現は:song
文字:xiaosongge,xiaoSongge 対応を待っています
XIAOのマッチング結果song
ゲー,シアオ・ソング
正式式表現はデフォルトで大きく書かれるので,songはマッチしない.しかし,ほとんどの正規表現の実装では,大文字を大きく書かない表示のオプションが提供されている.
. は任意の文字にマッチするために使用されます.
公式表現:c.t
カット・セット・カアット・ドッグ
比較結果:cat
cet
CAAAAT ドッグ
解析:c.t は"c
同理,多个连续的.可以匹配多个连续的任意字符:
正式式式:c...t
カット・セット・カット・ドッグ
カット・セットcaat
犬
.は正規表現において特別な意味を持ち,特別な文字である。\ また特別な文字であり,特別な文字に対する転写作用を作用させる。マッチしたい場合は,本当の".
公式表現:c.t
カット c.t ドッグ
匹配結果:catc.t
犬
注意: \ は特殊文字であるため,実際の \ 文字をマッチするには 2 つの反斜線\ を使用する必要があります.
正式式式:c\t
カット・c\t・ドッグ
匹配結果:catc\t
犬
上記のように.任意の文字をマッチすることができますが,いくつかの特定の文字をマッチしたい場合はどうですか?特定の文字をマッチするには[と]元文字を使用できます.
正式式式:c[ab]t
カット cbt cet
比較結果:cat
cbt
チェット
解析:[ab]は"a
上記の例では,cet をマッチしたい場合, [] に1つ追加します.任意の小文字をマッチしたい場合,何十個もマッチします.
正式式式:c[a-z]t
対応中のテキスト:cat cbt czt c2t
マッチングの結果:cat
cbt
czt
c2t
解析:c[a-z]tは"cが始まり,tが終わります"と表示され,中間は文字"a" - "z"の任意の文字です.
似たような区画は:
[0-9]は[0123456789]と同じ機能である. すべての数字をマッチする. [A-F] AからFまでの文字を大文字にします. [A-Z] AからZまでのすべての文字を上書きします. [a-z] aからzまでのすべての小文字にマッチします. [A-z] は ASCII A から ASCII z のすべての文字をマッチする (すべての文字をマッチするだけでなく,ASCII 表の A から z の文字をマッチする,例えば [ と ^ など). [A-Za-z0-9] すべての上下文字と数字をマッチします.
キャラクターセットは,一般的に,マッチしたい文字のセットを指定するために使用されます. しかし,時には,あなたがマッチしたくない文字のセットを排除したい場合もあります. これは文字のセットの否定によって実現できます. 例えば:
正式式式:c[^a-z]t
対応中のテキスト:cat cbt czt c2t cAt
カット cbt cztc2t
cAt
解析:この例は前例とまったく逆である。[a-z]はすべての小文字に対応する.[^a-z]はすべての小文字以外の文字に対応する。
^ は文字列内のすべての文字を解消した文字列である.
元文字は正規表現において特別な意味を持ち,上記のいくつかの元文字について述べた.例えば.、[と]、これらの文字は,直接その意味を表すことができず,例えば,直接[をマッチするために]を使用することはできません.
すべての元文字には,前面に反斜線転記を加えることができる.転記後には,文字が特殊意味ではなく,それ自身にマッチする.例えば,[マッチする" [:"]:
正式式式:a[b]
対応するテキスト:a[b ab a[[b
比較結果:a[b
ab a [[b]]
注意: \ は変数元文字を使用するので,\ も元文字であるという意味です.
正式式式:a\b
対応するテキスト:a\b a\b a[[b
a\b と表示される.a\b
a[[b
時には,テキストに印刷できない空白文字をマッチする必要がある場合もあります.例えば,すべてのTab文字,またはすべての交代文字を見つけたい場合もあります.以下の表の特殊元文字を使用できます:
例えば\r\nは,Windowsでファイルを切り替える回転回転の組み合わせをマッチします.LinuxやUnixでは\nを使えばいいだけです.
特殊なメタ文字が一般的な文字集合をマッチするために使用できます.これらのメタ文字はマッチ文字クラスと呼ばれる.あなたはそれらを便利に使用することがわかります.
数字と非数値が一致します. 上記のように,[0-9]はすべての数字にマッチできます.任意の数字をマッチしたくない場合は[^0-9]を使用できます.以下の表には,数字と非数字のクラス元文字がリストされています:
正式式式:c\dt
対応中のテキスト:cat c2t czt c9t
匹配結果:catc2t
cztc9t
正式式式:c\Dt
対応中のテキスト:cat c2t czt c9t
マッチングの結果:cat
c2tczt
c9t
アルファベット文字と非アルファベット文字をマッチします
また,通常使用されるクラスメーターは\wと\W:
正式式式:c\wt
対応中のテキスト:cat c2t czt c-t c\t
マッチングの結果:cat
c2t
C-t c\ t
正式式式:c\Wt
対応中のテキスト:cat c2t c-t c\t
匹配結果:cat c2tc-t
c\t
空白と非空白をマッチします
このマッチングクラスは,次のような空白クラスです.
正式式式:c\st
テキスト:cat c t c2t c\t
匹配結果:catc t
c2t c\ t
正式式式:c\St
テキスト:cat c t c2t c\t
マッチングの結果:cat
c tc2t
c\t
+元文字は"つまたは複数の文字をマッチすることを示します.例えば,aは"a"をマッチし,a+は"つまたは複数の"a"をマッチします.
公式表現:cat
テキスト:ct cat caat caaat
マッチング結果:ctcat
カット カット
正式式式:ca+t
テキスト:ct cat caat caaat
マッチング結果:ctcat
caat
caaat
文字列で+を使うとき, + を列の外に置く必要があります:
正式式式:c[0-9]+t
マッチングのテキスト:ct c0t cat c123t
マッチング結果:ctc0t
猫c123t
解析:c[0-9]+tは",cが
もちろん,[0-9+]も正しい正規表現ですが",0" - "9" と "+" を含む文字の集合を表します.
一般に,元文字.. と + などが文字集合で使用される時,文字の意味として使用されるので,変換する必要はありません.しかし,変換しても問題ありません.したがって,[0-9+] と[0-9+] の機能は同じです.
注意:+はメタ文字で",+"をマッチするには+・を表示する必要があります.
0文字またはそれ以上の文字をマッチしたい場合は, * メタ文字を使用できます.
正式式式:ca*t
テキスト:ct cat caat cbt
マッチングの結果:ct
cat
caat
cbt
注意:*記号は元文字である. "*"をマッチするには,変換が必要である.
?は0または1文字をマッチします. だから,?はテキスト内の任意の文字をマッチするのに最適です.
正式式式:ca?t
Ct cat caat cbt 文字のマッチングを待っています
比較結果:ct
cat
CAAT cbt
注意:?記号は元文字である. "? "をマッチするには,変換が必要である.
正式式式はマッチする回数を指定することを許す.回数は
正確なマッチ数 マッチする回数を指定するには,{と} の間に数字を入力できます.例えば,{3} は,3回前に現れる文字または集合をマッチします:
正式式式:ca{3}t
Ct cat caaat cbt 文字のマッチングを待っています
マッチング結果:ct catcaaat
cbt
少なくとも数回
また,マッチする最小値のみを指定することもできます.例えば,{2,} は2回またはそれ以上マッチすることを意味します:
正式式式:ca{1,}t
Ct cat caaat cbt 文字のマッチングを待っています
マッチング結果:ctcat
caaat
cbt
数値区間マッチング
また,最小値と最大値を使用してマッチの数を定義することもできます.例えば,{2,3}は最小2回マッチ,最大3回マッチを意味します.
公式式:ca{2,3}t
Ct cat caaat cbt 文字のマッチングを待っています
マッチング結果:ct catcaaat
cbt
この式は,{0,1} と {0,1} の関数と同じです.
この記事へのトラックバック一覧です.
正式式式:s*g 文字:xiao song xiao song 文字:xiao song 文字:xiao 試合結果:xiao song xiao song 解析:s.*gは,予想通り2つの"song"をマッチするのではなく,最初の"s"と最後の"g"の間のすべてのテキストをマッチした.
これは*と+が貪欲なマッチングであるからです.つまり正規表現は常に最小のマッチングではなく最大のマッチングを求めます.これは意図的に設計されています.
しかし,貪欲なマッチを望まない場合は,これらの量詞の非貪欲なマッチ (できるだけ少数の文字をマッチ) を使用してください.
そうかこの例を修正するには, *? を使用できます.
正则表达式:s.ゲル
文字:xiao song xiao song 文字:xiao song
Xiaoのマッチング結果song
シャオsong
分析:可以看到s."g"が2つの"song"と一致します.
文字列の境界にマッチする元文字は^と$で,文字列の始まりと終わりに用いられる.
^ フォローしている文字:
公式表現は ^ xiao
文字:xiaosong (シアオソング)
比較結果:xiao
歌
アキアオソング アキアオソングのマッチング結果 解析: ^xiaoは"xiao"から始まる文字列にマッチする.
$ は,次の方法で使われます:
公式表現: song$
文字:xiaosong (シアオソング)
XIAOのマッチング結果song
文字:xiaosonga 文字:xiaosonga 比較結果: シアオソンガ 分析:song$は"song"で終わる文字と一致する.
共有する:
正式式式: ^[0-9a-zA-Z]{4,}$
対応中のテキスト:a1b234ABC
比較結果:a1b234ABC
+a1b23=4ABC テキストを表示する マッチングの結果: +a1b23=4ABC 解析:^[0-9a-zA-Z]{4,}$は数字や文字で構成され,四桁の文字列よりも大きい文字列である.
注意:^が集合の先にある場合,否定表示;集合の外にある場合,文字列の先の位置をマッチします. [^0-9] と^[0-9] の違いを試すことができます.
しかし,複数行モードは有効である.複数行モードでは,正規表現エンジンは文字列の区切り符として文字列を切り替える. ^ はテキストの始まりまたは一行の始まり,$ はテキストの終わりまたは一行の終わりにマッチする.
この例を修正します.
正式式式は: ((?m) ^ [0-9a-zA-Z]{4,}$
対応中のテキスト:a1b234ABC この2つの要素は, ABC123456
比較結果:a1b234ABC
+a1b23=4ABCABC123456
解析: ((?m) ^[0-9a-zA-Z]{4,}$は,各行に数字や文字で構成され,四桁の文字列よりも大きい文字列をマッチします.
注意:複数行式を使用する場合は,正規式の先頭に ((?m) を置く必要があります. (?m) は,ほとんどの正規表現実装ではサポートされていません. いくつかの正規表現実装では,\Aが文字列の始まりと\Zが文字列の終わりに一致することをサポートしています. サポートされている場合,これらの元文字は^、$と同じ機能を持っています. しかし,これらの元文字は,\?mの修飾を使用することはできません.
フォローしているユーザー:J.A.R.