2009-11-07 6 views

答えて

7

正規表現は、テキストコンテンツに適用できるパターンマッチングの形式です。たとえば、DOSのワイルドカードを考えてみましょうか?ファイルを検索しているときに使用できる*と*。 。これは、RegExpの非常に限定されたサブセットの一種です。例えば、 "fn"で始まり、1から4のランダムな文字が続き、 "ht.txt"で終わるすべてのファイルを検索する場合は、通常のDOSワイルドカードではできません。一方、RegExpは、その複雑なパターンを扱うことができます。

正規表現は、短期的に、効果的に

  • ハンドルデータ
  • 検索方法で、文字列
  • を置き換え、拡張文字列処理を提供します。

多くの場合、正規表現では、組み込みの文字列メソッドやプロパティなどの他の機能は、複雑な関数やループで使用する場合にのみ行うことができます。

+0

+1非常に良いアナロジー! –

4

複雑な文字列パターンを検索/置換/検証しようとしているとき。

2

パフォーマンスを向上させる必要がある場合は、コードを書くために正規表現を使わないでください。たとえば、非常に大きなCSVファイルの解析です。

2

正規表現は、テキストを解析するためのdsl(ドメイン固有の言語)です。ちょうどxpathがxmlをトラバースするためのdslです。基本的に汎用言語の中にあるミニ言語です。狭い目的に特化しているので、非常に少量のコードでかなりの成果をあげることができます。正規表現によく使用されるのは、文字列が電子メールアドレス、電話番号、ssnなどであるかどうかをチェックすることです。

4

文字列(preg_match)の比較、部分文字列の置換(sed、preg_replace)ファイル内の文字列を検索する(grep)、文字列を分割する(preg_split)などがあります。

これは非常に柔軟で広範なパターン表現言語であり、知っておくと非常に便利です。

BUT!彼らがポーカーについて言うように、学ぶのはとても簡単ですが、マスターするのは非常に難しいです。

私はちょうどRegExのために完璧だと思ったquestionを見つけました。見て、自分で決めてください。

2

正規表現が>> NOT < <の場合もあります(一般的には常に例外があります)。

  • 解析HTML
  • DOMパーサはほとんど常により良い選択である上記の例ではXML

の解析。文法は複雑で、ネストされたタグのようにエッジケースが多すぎます。

今後のメンテナンスプログラマー(あなたの可能性もあります)についても考慮してください。コメントやよく選択されたメソッド/定数/変数名は、特に正規表現に慣れていない開発者にとって、世界を変えることができます。

+0

私はほとんどあなたがhtmlとxmlの正規表現の使用を主張していると思っていたが、スキャン中は "not"という言葉に重点を置くべきである。 – Kris

+0

@Kris:さらにカウベルを加えた! ;) – TrueWill

0

正規表現は、フリーテキスト入力のフォーマットを検証するのに特に便利です。もちろん、データの正当性を検証することはできません。また、特定のタイプの値(電話番号や郵便番号など)の地域のバリエーションを覚えておく必要があります。しかし、有効な入力をテキストパターンとして定義することができる場合、正規表現はバリデーションの迅速な作業を行います。

関連する問題