この記事では、Javaの通常のサラウンドビューの機能と使用について説明します。次のように、参照のために共有してください。
ビューの周り
1。コンセプトを取り巻く
ゼロ幅のアサーションとしても知られている周りを見回し、略されたアサーション。
サラウンドビューは位置(前面または背面)を強調し、サラウンドビューの式を一致させるために一致する必要があります。
サラウンド視聴は、その場所に仮想追加の追加の判断条件と見なすことができ、通常のマッチング文字を消費しません。
2。基本的な表現を見回します
(?=式)順序は正であり、式は場所の右側で一致させることができます。
(?!式)周囲の視聴のシーケンス否定は、場所の右側が式と一致できないことを意味します
(?<=式)逆の順序は積極的に周りを見回し、位置の左側が式と一致することを示します
(?<!式)逆順序は周囲のビューを無効にし、位置の左側が式と一致できないことを示します
注:注文(=)の右側が一致し、逆のオーダーサラウンドビューには、シーケンシャルサラウンドビューよりも多く<があります。
JavaScriptは、シーケンシャルサラウンド表示のみをサポートしますが、リバースサラウンド表示をサポートしていません。
シーケンシャルなサラウンドビューと逆オーダーサラウンドビューの両方がJavaでサポートされていますが、リバースオーダーサラウンドビューは、長さの決定で式のみをサポートします。サラウンドビューの逆の順序で、Quantifiersはサポートのみをサポートしていますか?また、長さが不確実な他の数量詞をサポートしないでください。
3.例を使用してください
3.1。シーケンスの肯定と見方(?=式)
3.1.1。接尾辞なしで接尾辞なしでファイル名を一致させます ".txt"
【+(?=/。txt)】
文章:
txtfile.txt
efefile.exe
Inifile.ini
一致結果:txtfile
3.1.2。パスワードを一致させる(文字(ケースの鈍感)、数字、6〜16桁が含まれている必要があります)
【^(?=。*?[a-za-z])(?=。*?[0-9])[a-za-z0-9] {6,16} $】
(?=。*?[a-za-z])次の文字に少なくとも1つの文字を定義し、使用(?=。*?[0-9])を使用して、次の文字で少なくとも1つの数値を定義し、最終的に通常の[a-za-z0-9] {6,16}を実際に一致させることで定量化を定義します。
3.2。サラウンドビューのシーケンス否定(?!式)
3.2.1。 <a> </a>以外のタグを一致させます
【<(?!/?a/b)[^<]+?>
テキスト:<a> <a1> </a> zxiaofan <div> com </d> iv> cc
一致結果:
<a1>
<div>
</d>
3.2.2。サフィックスの最後に「.txt」ではない接尾辞とファイル名を一致させます
【。 (so。+はtxtfile.txtを直接一致させることができます)
【(。+)(?!/。txt)/。[^。]+$】
文章:
txtfile.txt
efefile.exe
Inifile.ini
一致結果:
efefile.exe
Inifile.ini
3.3。周りの逆注文断言(?<=式)
3.3.1。指定されたタグ間のコンテンツを一致させます
【(?<= <div>)[^<]+(?= </div>)】
テキスト:<div> zxiaofan.com </div>
一致する結果:zxiaofan.com
3.3.2。指定されたパラメーターの値を取得します
【(?<= name =)。+】
文章:
name = zxiaofan
年齢= 20
レベル= 6
一致結果:zxiaofan
3.4。サラウンドビューの逆順序否定(?<!式)
3.4.1。指定されていないパラメーターの値を取得します
【^[^=#]+=(?<!name =)。+$】
文章:
name = zxiaofan
年齢= 20
レベル= 6
#sex = 1
一致結果:
年齢= 20
レベル= 6
4。包括的な例
4.1。文字、数字、特殊文字が含まれている必要があります
【^(?=。*?[a-za-z])(?=。*?/d)(?![a-za-z/d]+$)。+$】
説明: ^(?=。*?[a-za-z])制限には文字が必要です。 (?=。*?/d)制限には数字が必要です。 (?![a-za-z/d]+$)制限はすべての数字と文字になりません。
4.2。メインドメイン名と一致します(トップレベルのドメイン名を一致させます)
【(?<=(?:: /// w {0,50}/。)?)(?
文章:
vip.zxiaofan.com.cn
http://zxiaofan.com/123
www.zxiaofan.org.cn
一致結果:
zxiaofan.com.cn
zxiaofan.com
zxiaofan.org.cn
注:[?:]一致するテキストを自動的に指定したグループにキャプチャしたり、このグループにグループを割り当てたりしません。 (削除後の結果には影響しません)
特別なドメイン名:Wanwang www.net.cn
4.3。 5つの連続した携帯電話番号を一致させます
【1 [34578]/d {3}(/d)(?!/1 {1})(/d)/2 {4}】
文章:
1832850111111
183285111111111
1832855111111
183281111111
一致結果:
183285111111111
注1:/1は、最初の内容セットと一致します
Note2:(?!/1 {1})フィルター6連続した数字
後方
1。逆概念
キャプチャグループ:()のサブエクセプションに従っていくつかのグループに分割します。 ()の各ペアが表示されます。キャプチャグループです。エンジンはキャプチャグループに番号が付けられ、番号付けのルールは左ブラケットです(左から右への発生順序は1から始まります。
グループの命名をキャプチャ:
(?<name> exp)expとキャプチャテキストを名前という名前のグループにキャプチャします。
(?:exp)expは、一致するテキストを自動化されたグループにキャプチャしません。また、このグループにグループ番号を割り当てません。
backreference:
/1は最初のグループ(ABC)を意味します。 /2は2番目のグループを意味します。
/k <Word>:指定された名前のグループを参照します。
2。例を使用してください
2.1。ファイル名を同じ開始と終了と一致させる
【([az] {3})[az]+/。/1 {1}】
文章:
txtfile.txt
efefile.txt
fileini.ini
一致結果:
txtfile.txt
注:([az] {3})は最初のグループであり、 /1 {1}は最初のグループを1回参照することを意味します(ここでは /1 {3}と書くことはできません)。
PS:参照用の2つの非常に便利な正規表現ツールを次に示します。
JavaScript正規表現オンラインテストツール:
http://tools.vevb.com/regex/javascript
正規表現オンライン生成ツール:
http://tools.vevb.com/regex/create_reg
Javaアルゴリズムの詳細については、このサイトに興味のある読者は、「Javaの正規表現スキル」、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードスキル」、「Javaファイルおよびディレクトリ操作スキルの概要」、および「Java Cache操作スキルの概要」、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作スキルの概要」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。