サーチ…


備考

正規表現は通常の文法または文脈自由文法のいずれかに限定されているので、正規表現のよくある誤用がたくさんあります。そのため、このトピックでは、あなたが正規表現を使用するが、代わりにあなたの好きな言語を使うべきではないときのいくつかの例があります。

一部の人々は、問題に直面したときに、
"私は、私は正規表現を使用することを知っている。
今、彼らには2つの問題があります。

- ジェイミー・ザインスキー

一致するペア(括弧、かっこなど...)

いくつかのregexエンジン(.NETなど)はコンテキストフリーの式を処理でき、うまく動作します。しかし、それはほとんどの標準エンジンでは当てはまりません。たとえそれがあっても、読みにくい表現が複雑になることがありますが、解析ライブラリを使用すると作業が簡単になります。

単純な文字列操作

正規表現は多くのことを行うことができるので、最も単純な操作のためにそれらを使用することが魅力的です。しかし、正規表現エンジンを使用すると、メモリとプロセッサの使用にコストがかかります。式をコンパイルし、メモリにオートマトンを格納し、初期化して文字列でフィードを実行する必要があります。

そして、それを使う必要がないケースがたくさんあります!どの言語を選択しても、基本的な文字列操作ツールは常にあります。だから、原則として、標準ライブラリにアクションを実行するツールがあるときは、正規表現ではなくそのツールを使います:

  • 文字列を分割しますか?

たとえば、次のスニペットはPython、Ruby、Javascriptで動作します。

'foo.bar'.split('.')

どのように読み、理解するのが簡単で、(何とか)等価な正規表現よりもはるかに効率的です:

(\w+)\.(\w+)
  • 末尾のスペースを削除しますか?

末尾のスペースにも同じことが適用されます。

'foobar     '.strip() # python or ruby
'foobar     '.trim() // javascript

これは次の式と等価です。

([^\n]*)\s*$ # keeping \1 in the substitution

HTML(またはXML、JSON、Cコードなど)の解析

Webページ(または表現/プログラミング言語)から何かを抽出する場合、正規表現はタスクの間違ったツールです。代わりに、言語ライブラリを使用してタスクを達成する必要があります。

HTML、XML、またはJSONを読みたい場合は、適切に解析したライブラリを使用して、好きな言語のオブジェクトとして使用できます。読みやすく、保守性の高いコードになります。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow