-
正規表現:
正規表現を使用すると、一連の特殊文字を使用して一致パターンを構築し、比較オブジェクトに一致する文字列が含まれるかどうかに応じて、その一致パターンをデータ ファイル、プログラム入力、Web ページ上のフォーム入力などのターゲット オブジェクトと比較できます。パターンに応じて、対応するプログラムを実行します。規則性は、そのシンプルさ、実用性、スピードによりプログラマーの愛を勝ち取ってきました。 
正規表現の記述に関するいくつかの考え:
1. まずルールを決めます。どのような種類の文字列を照合する必要があり、その文字列はどのような部分で構成され、どのような特徴があるのか。
2. 最小単位を提案します。場合によっては、いくつかの一致するルールが繰り返される場合があります。共通点を見つけて、それらをルールとして計画することができます。
3. ルールと最小単位に従って、規則を 1 つずつ書きます。
4. これらの単位規則性の組み合わせを統一して、必要な完全な規則性を形成します。
ここでは、いくつかの基本的なタグとその使用法を理解する必要があります。ルールは基本的なタグで構成されています。通常のマークアップも非常にシンプルなので、理解しておくとよいでしょう。
正規表現でよく使用されるタグ
1 正規表現でよく使用されるマーカー 2 ^ | 行または文字列の先頭 3 $ | 改行以外の文字 6 W |単語以外の文字 7 d | 数字 ([0-9] に相当) 8 D | 文字列の先頭 11 Z | 文字列の末尾文字列の終わり 13 14 s | 空白文字 15 S | 空白文字以外の文字 16 17 b | 単語以外の境界 19 b | ] | セット内の任意の文字は、次のように範囲を表します。 [0-9]、[az] 前の式 22 | 25 * | 0 個以上の以前の式 (非貪欲) 27 + 1 個以上の以前の式 (非貪欲) | mn 個の前の式 30 {m,n}? | mn 個の前の式 (非欲張り) 33 {?=} { ?!} (?>) (?#) (?imx-imx) など
最も基本的な例:
1 # 文字列全体に一致します 2 put /ruby/ =~ "ruby" # 0 3 put /ruby/ =~ "Ruby" # nil 4 5 # 行または文字列の先頭と末尾に一致します 6 str = "abcdef" 7 str 8 を置く /^abc/ =~ str # 0 9 を置く /def$/ =~ str # 310 11 str = "abcndefn" 12 を置く /^abc/ =~ str # 013 を置く /def$/ =~ str # 414 Puts /abc/ =~ str # 015 Puts /def/ =~ str # 416 17 #文字列自体の先頭と末尾を一致させる 18 str = "abcndefn" 19 Puts /Aabc/ =~ str # 020 Puts /defZ/ =~ str # 421 Puts /defz/ =~ str # nil22 23 #単語の文字に一致 24 Puts "単語の文字に一致" 25 pattern = /w/26 Puts pattern = ~ "abc " # 027 put pattern =~ "." # nil28 29 # 整数に一致 30 # d 数値 31 # D 非数値 32 put "数値に一致" 33 put /d/ =~ "122" #034 Puts /D / =~ "122" #nil35 Puts /D/ =~ "abc" #036 37 38 #Border 39 str = "これはあなたの友達です!"40 Puts str41 Puts str.gsub(/b/ ,"|" ) # |これ| |あなたの| |友達|!42 str.gsub(/B/,"-") # これはあなたの友達です!-43
修飾子インスタンス
1 は "修飾子" を入力します 2 は "修飾子: *" を入力します 3 は /(abc)*/ =~ "a" # 0 4 は /(abc)*/ =~ "abc" # 0 5 6 7 を入力します "修飾子: *" を入力します+" 8 プット /(abc)+/ =~ "a" # nil 9 プット /(abc)+/ =~ "abc" # 010 11 プット "修飾子: ?" 12 プット /(abc)?/ =~ " c" # 013 puts /(abc)?/ =~ "abc" # 014 15 16 puts "修飾子: {n}"17 puts /(abc){2}/ =~ "abc" # nil18 puts /(abc) {2}/ =~ "abcabc" # 019 20 Puts "修飾子: {n,}"21 Puts /(abc){2,}/ =~ "abc" # nil22 Puts /(abc){ 2,}/ = ~ "abcabc" # 023 24 puts "修飾子: {n,m}"25 puts /(abc){2,3}/ =~ "abc" # nil26 puts /(abc){2, 3}/ =~ " abcabcabc" # 027 28 Puts "修飾子: *?" 29 Puts /(abc)*?/ =~ "a" # 030 Puts /(abc)*?/ =~ "abcabc" # 031 32 Puts "修飾子: +? " 33 put /(abc)+?/ =~ "a" # nil34 put /(abc)+?/ =~ "abcabc" # 035 36 put "修飾子: ??"37 put /(abc)??/ = ~ "a" # 038 places /(abc)??/ =~ "abcabc" # 039 40 41 #match, {1} {3}42 # {3} は一致する可能性があり、その場合、{1} は確実に一致しますが、 reverse は true ではありません 43 # 一致範囲: {1} > {3}
一般的な例:
1 「例」を入力します 2 # 電話番号の照合: 3 # 一般に、中国の電話番号は 7 ~ 8 桁、市外局番は 3 ~ 4 桁の整数、市外局番の最初の桁は 0、区切り文字 '-' は真ん中で使用 4 #最初と最後の制限に注意 記号 5 pattern = /^0d{2,3}-d{7,8}$/ 6 places pattern =~ "010-82809999" # 0 7 put pattern =~ "00010-82809999" # nil 8 9 # 携帯電話番号と一致 10 # 1 から始まり、2 桁目は 3、5、8、11 桁 11 pattern = /^1[3,5,8] d{9}$/12 places pattern =~ "15810990001" #013 14 #ID カード番号 15 pattern = /d{18}|d{15}/16 17 #Match IP18 #以下の 4 つの整数グループ255、'.' で区切る 19 は "IP" を入力 20 num = /^d|[01]?d{1,2}|2[0-4]d|25[0-5]/21 パターン= /^(#{num}.){3} #{num}$/22 #全体: パターン = /^(^d|[01]?d{1,2}|2[0- 4]d|25[0-5].) {3}^d|[01]?d{1,2}|2[0-4]d|25[0-5]$/ 23 パターン =~ "127.0.0.1" # 024 パターン =~ "254.255.255.255"25 26 # メール アドレスと一致 27 パターン = /^w+@w+.w+$/ # これには '-' はありません28 pattern = /^[w-]+@[w- ]+.[w-]+$/29 Puts pattern =~ " [email protected] " #030 31 # URL32 に一致 # http:// www.google.cn33 pattern = /(http|https|ftp): (//|\\)((w)+[.]){1,}(net|com|cn|org| cc|tv|[0-9]{1,3})( ((/[~]*|\[~]*)34 (w)+)|[.](w)+ )*(((([?](w)+){ 1}[=]*))*((w)+){1}([&](w)+[=]( w)+)*)*/35 36 パターン =~ " http://www.google.cn?uid=123 " #0
他の
貪欲の意味
1 put "greedy" 2 #greedy は、可能な限り長い文字列に一致することを意味します 3 # '.' 意味: 改行以外の文字 4 str = "海が月に白く染まった土地と出会う場所" 5 put str 6 match = /.* the/.match(str) 7 は match[0] # 海と出会う場所、* は貪欲です。貪欲になりたくない場合は、 + '?' を追加します。 8 #*?non-greedy 9 match = /.*?the/.match(str)10 places match[0] # where the11 12 str.insert( 0,"Hello n")13 match = /.*?the/.match(str)14 places match[0] #where the
ポジティブプレビューとネガティブプレビュー
1 #ポジティブなプレビューとネガティブなプレビュー 2 put "ポジティブなプレビューとネガティブなプレビュー" 3 s1 = "新世界辞典" 4 s2 = "新世界交響曲" 5 s3 = "新世界秩序" 6 7 reg = /New World (?=Dictionary| Symphony)/ 8 m1 = reg.match(s1) 9 put m1.to_a[0] # "新世界"10 m2 = reg.match(s2)11 put m2.to_a[0] # "新世界"12 put reg .match(s3) # nil13 14 places "ネガティブプレビュー"15 16 reg = /New World (?!Symphony)/ # "New World" の後に "Symphony" はありません 17 put reg.match(s1).to_a[0 ] # "新世界"18 put reg.match(s2).to_a[0] # nil19 put reg.match(s3).to_a[0] # "新世界"
-