何が他の先進的な機能照合を見つける時には、すべてのことを知っていますが必要かどうかを、入力テキストパターンにマッチされます。より一般的に、さらには、一致した特定のデータを処理します。たとえば、あなたのWebフォームからのデータの有効なクレジットカード番号- 13から16桁のシーケンスが含まれて願っています。あなただけではなく、このパターンの発生を確認したいと思う、あなたが何をしたいと一致した数字列を抽出し、そうすることをさらに検証チェックを適用する可能性がある。正規表現はパターン要素のグループを定義することができます。全体的なパターンは、例えば、異なる文字を含むなど、より多くのリテラルテキストは、別のグループ化するいくつかのクラスからの文字変数の長さのシーケンスを持ついくつかのリテラルテキストを、グループを持つことができます。場合は、パターンの全体的な試合の詳細と、部品ごとに特定のグループに一致するストアが、正規表現にマッチする機能を照合されます。これらのデータは、グローバル変数は、Perlのコアで定義されて格納されます。 pattern要素は、文字列が一致するグループは、括弧に入れている必要があります。場合は、文字列は、このパターンと一致するため、/ \ Dは可能性が13から16桁のサブいくつかの長い文字列から文字列を抽出するためのパターン(\開発(13,16))\開発/;、変数$ 1の桁を保持する文字列です。次の例では、入力ラインから2つのフィールドの抽出を示しています。入力ラインには、金額を含むメッセージをすることになっています。米ドル金額は、ドル記号で構成されることが期待されると、数字のいくつかの番号、オプションの小数点およびオプションの端数金額。このパターンは、この試合のために使用されます: / \ $([0-9] +)\。?([0-9] *)\用D / その要素とは: \数字最初のグループを形成する$リテラルのドル記号([0-9] +)以外の空のシーケンス\?オプションの小数点([0-9]数字を2番目のグループを形成する*)オプションのシーケンス\開発任意の'非'桁の文字 は、最初の括弧で囲まれたサブグループと一致するテキストは、Perlのコアの変数には$ 1を開催され、テキストを$ 2に行くと数字の2番目のグループに一致する。以来、2番目のサブ式'はゼロ以上の数字が'、それを$ 2に成功したマッチの後、空の文字列を保持することを指定します。変数$ 1、$ 2等は読み取り専用です;前に変更することができる値は、これらの変数からデータをコピーする必要があります。 (1)(印刷"と入力文字列の中:"; $ str = テスト入力と出力の例です: 文字列を入力:これは、ドルのテストプログラムです。文字列ドルの抽出を入力して一致していないですか:このプログラムは、$ 0コストです。ドル0セント0の文字列を入力します:このプログラムは、文字列を入力ドル34とセント99 34.99ドルコストする必要があります:終了
多くの場合、あなたのようなパターンが必要: いくつかの固定テキスト; 文字列の値は任意です処理のために必要です。 いくつかの以上の固定テキストです。 あなた.*任意の文字列に一致する;ようにする場合は、サブ単語を'固定'と'text'、このパターン/固定(.*)テキスト/を使用することの間の文字列を抽出しようとしていた:使用 (1)(印刷"と入力文字列の中:"; $ str = たとえば、入力と出力: 文字列を入力:スライド上のテキストを修正しました。開く文字列を入力文字列とのマッチング:このテキストを修正しました。現在、他のテキストの上で作業を開始、このテキストを文字列と一致した。今すぐに作業を開始、他 任意の文字列のマッチングも問題にすることができます。マッチングアルゴリズムは'欲' -それは最長の文字列を検索しようとすると一致すること。より多くの微妙なコントロールがあります;する.*のようなパターンを使用できますか?これは、取得すると、この')。ときどきあるような、より複雑なパターンが必要であるが一致する'最小文字列は、上記の例の2番目(これで一致: fixed_text()other_stuffSAMEPATTERNrest_of_line somepattern これらのパターンは、パターン文字列の後方参照'を使用する'を定義することができます。後方参照マッチしたサブに関連して、パターンマッチstrings.Whenパターンをチェックする場合は、最初のサブの可能性と一致する文字列を検索(要素'()'この例では)somepatternとは、Perlのコアの変数には、このテキストは$ 1を節約できます。後方参照を、フォーム内の\ 1は、後に一致するパターンを動的にこの保存された部分一致に置き換えられますが発生します。パターンにマッチし、その同じパターンが繰り返されることを確認することができます。後方参照は、次のコードフラグメントに示されています。これらのフラグメントは、CコードをPascalコードのおおよその翻訳を実行するにはPerlスクリプトの一部を形成することがあります。このようなことが完全に自動化することはトランスフォーム(言語のいくつかの根本的な違い、巣にパスカルの能力のようなプロシージャを宣言)を持っているが、翻訳作業の大部分を自動化することができます。簡単な変換操作が必要とされます: カウント:=カウント+ 1; ="カウント+ +;数:= *ムル数'; ="*=ムル数';合計:=合計+ 17; ="合計+ = 17; これらの場合は、パターンの必要がある: 名(左辺値)と一致する、このサブ$ 1文字列を一致させることです。 Pascalの:=代入演算子と一致します。 は、最初のものと同一である別の名前にマッチマッチするので、後方参照\ 1は、パターンの必要があります。 パスカルマッチ+、 - 、*、/演算子は、このサブ$ 2文字列を一致させることです。 いずれかの番号または別の名前にマッチ、サブマッチは$ 3の文字列。 パスカルの終端の'にマッチ;'。 できるように余分な空白の任意の場所。 場合、入力ライン、プログラム可能出力は、(+ +、+ =など)の入力は、出力は変更されることがありますが一致しない場合、Cの変更、代入演算子を使用して修正行がパターンに一致します。だけ'の+'と'の変換を示していますほとんどのテストフレームワーク- '演算子です: このパターンはここが必要です: / \ *([-座- z]は、\ワット*)*:= * \ 1 *(\ + | \ * | \ / | - )*(([0-9 ]+)|([掲載-座- z]は、\ワット*))*; /) の部分があります: 掲載先頭のスペースまたはタブ文字の任意の番号と一致する*。 ([-座- z]は、\ワット*)は、文字列は文字で始まる場合、文字、数字、およびアンダースコア文字の任意の番号が一致する(有効)Pascalの変数の識別子を取得する必要があります。これは$ 1のサブグループ一致であり、その値は、後で、パターン内の後方参照を介して参照されます。\ 1。その値は、処理コードで使用することができます。 '*'*量を持つ領域を0(ゼロまたはそれ以上)、これはPascalの代入演算子の前に:=.は、変数名の後に表示されるすべてのスペースと一致する :=は、Pascalの代入演算子と一致するリテラル文字列。 '*'を再度、余分なスペースを提供します。 \ 1は、後方参照のパターンです。それの合計のようなフォームに取り組んでいます:=合計+ヴァルを確立するために必要;。 '*'、余分なスペースは、通常の規定。 (\ + | \ * \ \ / | - )は、Pascal二項演算子と一致します。 (文字'のように+'が'されるため、通常の解釈は、パターンの定義の制御要素としては'エスケープ)。 '*'可能なスペース。 (([0-9 ]+)|([ -座- z]は、\ wはいずれかの数字のシーケンスです*))は、一致したサブストリング- [0-9] + -またはPascalの変数の名前。 '*'、スペース、いつものように。 ;複雑なパターンに一致するパスカル文の区切り、正規表現がかなり大きくなることができます。私は、電子メール経由で聞いたことがある4000の文字列式の噂は、電子メールアドレスからのキャプチャは重要な要素は、電子メールアドレスの形式の変化の大半は引当金を作る! プログラムにはない複雑なテキスト変換を、C'を変換するためにおもちゃ'のもっと野心的なバージョンのパスカルのように、通常の入力は、同じ行にはさまざまな変換を適用する必要があります。例えば、Pascalの場合は...次に必要なC言語の場合は(...)...スタイルに書き換えることができます。その文の条件部分がある場合は、書き換える必要がありますを使用してパスカルnot演算子を含むCの!演算子です。このような変換プログラムは、単に行を読んでいない変換し、出力は、変換された行を適用します。その代わりに、連続して上皮内の文字列に適用されます。各変換した後、更新された文字列を他の可能なパターンとその代替ください。Perlに対してチェックされている場で、これらを実行する代入演算子を持つ文字列に変換します。置換パターンでは、ソース文字列と置換後のテキストの機能を定義する正規表現で構成されます。パターンと代替のサブマッチを組み込むことができる文字列なので、テキストのいくつかの固定のコンテキストに埋め込まれた変数の部分を抽出することが可能であり、変数のテキストが若干変更さコンテキストに埋め込まれて交換で定義されます。'虚数パスカルCに変圧器'は別の例を示します。 1〜パスカルのない子を変更する必要があるとCの!演算子です。は、変換が簡単になる一般的なケース、されます: 左辺:=は式; ="左辺値=式;場合(ない表現)して="の場合(!式)を さらに同等のCで構築する場合... ...次にフォームを置き換えるための変換を受けることにif文のだろう。は、これらの変換を行う可能性が置換パターンです: 掲載/(:=| \()*は+ / \ 1!/; パターンを定義します: サブグループのいずれかは、リテラルシーケンスが含まれます:=、または左括弧(のようにエスケープ\()。 省略可能なスペース。 リテラルではない。 1つまたは複数のスペース。 代替テキストをすべてのサブグループ一致(のいずれかです:=または左かっこ)は、スペースとCの!演算子は、この置換パターンは、次のようなコードで使用される: ($ str =中 )(Chomp($ str);の順序を適用する#$にstr =〜掲載/(:=| str ...パスカルのnot演算子と#次の取り引き$変換\()*は+ / \ 1!/;。 ..印刷$ str、"\ Ñ";) 正規表現の最初のアプリケーションのパターンだけの簡単なフォームを使用します。あなたのタスクを、すべての後に、サーバーのログからIPアドレスを分離するいくつかの入力テキストから金額を抽出するような単純なもの、されるかは、クレジットカード会社を識別する優先されます。しかし、それが可能であり、多くの価値がある、より洗練しようとすると一致し、変換します。を参照するドキュメントは、Perlのperlretutチュートリアルとperlreをより多くのアイディアを得ることができます。 記事は、アンドリューピーターソン提出 免責事項:弊社のウェブサイトは、この資料の内容については責任を負いません。 Webarticles無料の情報リソースです。 重要: この記事は、"何を"自動ソフトウェアによって翻訳された、他の先進的な機能照合を見つける。大変申し訳ございませんが発生した可能性があります任意のスペルミスを感じている。お客様のご理解いただき、ありがとうございます。
|
|||||
| Online: 266 users browsing the articles directory |
|
|