私は正規表現を学び始めています、そして知りたいです:どちらの場合にそれらを使うのが良いですか?
7 に答える
正規表現は、テキストコンテンツに適用できるパターンマッチングの形式です。DOSワイルドカードを例にとってみましょう。および*ファイルを検索するときに使用できます。これは、RegExpの非常に限定されたサブセットの一種です。たとえば、「fn」で始まり、1〜4個のランダムな文字が続き、「ht.txt」で終わるすべてのファイルを検索する場合、通常のDOSワイルドカードでは検索できません。一方、RegExpは、それとはるかに複雑なパターンを処理できます。
正規表現は、要するに、効果的にする方法です
- データを処理する
- 文字列の検索と置換
- 拡張文字列処理を提供します。
多くの場合、正規表現はそれ自体で文字列処理を提供できますが、組み込みの文字列メソッドやプロパティなどの他の機能は、複雑な関数またはループで使用する場合にのみ実行できます。
複雑な文字列パターンを検索/置換/検証しようとしている場合。
文字列の比較(preg_match)、サブ文字列の置換(sed、preg_replace)、文字の置換(sed、preg_replace)、ファイル内の文字列の検索(grep)、文字列の分割(preg_split)などに正規表現を使用します。
これは非常に柔軟で普及しているパターン表現言語であり、知っておくと非常に役立ちます。
しかし!彼らがポーカーについて言うように、それは学ぶのはとても簡単ですが、習得するのはとても難しいです。
正規表現に最適だと思った質問に出くわしました。見て、自分で決めてください。
より良いパフォーマンスが必要な場合は、コードを書くために正規表現を避けなければならない場合があります。この例は、非常に大きなCSVファイルの解析です。
正規表現は、テキストを解析するためのdsl(ドメイン固有言語)です。xpathがxmlをトラバースするためのDSLであるのと同じように。これは本質的に、汎用言語の中のミニ言語です。狭い目的に特化しているため、非常に少量のコードでかなりの成果を上げることができます。正規表現の非常に一般的な使用法の1つは、文字列が電子メールアドレス、電話番号、社会保障番号などであるかどうかを確認することです。
正規表現が>>NOT<<適切である場合もあります(一般的に、常に例外があります)。
- HTMLの解析
- XMLの解析
上記の場合、ほとんどの場合、DOMパーサーの方が適しています。文法は複雑で、ネストされたタグなどのエッジケースが多すぎます。
また、将来のメンテナンスプログラマー(あなたかもしれません)を必ず検討してください。コメントおよび/または適切に選択されたメソッド/定数/変数名は、特に正規表現に堪能でない開発者にとって、違いの世界を生み出す可能性があります。
正規表現は、フリーテキスト入力の形式を検証する場合に特に役立ちます。もちろん、データの正確さを検証することはできず、その形式だけを検証することができます。また、特定の種類の値(電話番号や郵便番号など)の地域による違いに注意する必要があります。ただし、有効な入力をテキストパターンとして定義できる場合は、正規表現を使用して検証をすばやく実行できます。