2009-03-12 21 views
2

私は正規表現を取り入れ、その意味を理解する正規表現のバディを使用します。同様の行では、一致/置換する必要のあるパターンについて記述する自然言語の入力を受け取り、その記述の正しい(ほぼ正しい)正規表現を出すエンジンを持つことが可能ですか?正規表現の作成

だから、可能性があり、そのためにregexで、いくつかのファイル

全体単語 'DIO' と一致:<dio> または

\ bdio \ B

-ADを。

P.S. =私はここで、これを「主観的な」プログラミングに関係しない質問と考えるかもしれないと思う人はほとんどいないと思うが、私はこの質問にもかかわらず質問する必要がある。自分のため。 - ありがとう。

+0

類似:http://stackoverflow.com/questions/616292/is-it-possible-to-learn-a-regular-expression-by-user-provided-examples –

+0

ほぼ同じ:http:// stackoverflow .com/questions/629573/why-cant-regular-expressions-use-keywords-of-charactersの代わりに – innaM

+0

非常に閉じる:http://stackoverflow.com/questions/500839/regular-expression-compiler – innaM

答えて

0

ええ、私はそれがsubjectiveであることに同意します。しかし、私はあなたが間違った質問をしたと思うのであなたの質問に答えます。

答えは "YES"です。ほとんどすべてのものをコード化することができ、これはコード化するための単純なアプリケーションになります。それは完全に動作するのだろうか?自然言語は解析し解釈するのが非常に複雑であるため、そうではありません。しかし、いくつかの制約を加えてそのようなエンジンを書くことは可能です。

2

意味を導き出すことができる自然言語パーサーが必要なので、これはプログラムにとっては複雑になります。それを厳密なサブセットに限定しない限り、式言語を再作成していると、最終的に正規表現に戻ることになります。だから何の利益ですか?

Regexesは理由のために開発されました - それらは可能な最も単純で、最も正確な表現です。

Emacs用にはSymbolix Regular Expression Builderパッケージがありますが、それを見ると正規表現が使いやすくなると思います。

1

短い答え:いいえ、人工知能が向上しない限り、そうではありません。

このような記述をした場合、構文は非常に限定されます。誰かが知っているために "単語" dio "をいくつかのファイルにマッチさせると、彼らは基本的に正規表現の重要な知識を持つ必要があります。その時点で、正規表現だけを使用してください。

テクニカルではないユーザーの場合は、基本的な「このフレーズを見つける」または「行頭を見つけて??」で終わらない限り、これは機能しません。

小文字の記号とそれに続く文字列 'img'とそれに続く1つ以上のグループを含む行を見つけます:いくつかの空白の後に1つ以上の文字が続きます二重引用符で囲まれた文字列または一重引用符で囲まれた文字列のいずれかであり、これらのグループの後ろに空白文字が続き、スラッシュと大なり記号が続きます。この比較的単純な正規表現の平易な言語バージョンでの私の試みです

/<img(\s+[a-z]+=("[^"]*"|'[^']*'))+\s*/>/i 
0

自然言語プロセッサの使用を介した正規表現の生成が十分に可能です。 Prologはこの種の問題のための良い言語選択であると考えられています。実際には、実際には、出力として正規表現を提供する独自の入力言語を設計しています。あなたの目標が特定のタスクのための正規表現を生成することであるなら、これは実際に有用かもしれません。おそらく、あなたがやっている作業は、実行可能であるが正規表現に組み込まれていない特定の処方を必要とする傾向があります。これが一度に正規表現を作成するよりも効果的かどうかは、プロジェクトによって異なります。通常、これはおそらくそうではありません。なぜなら、あなた自身の言語がよく知られていたり、正規表現としてよく書かれたりすることはないからです。あなたの目標が、正規表現の出力を正規表現として解析する正規表現の置換えを生成することであるなら、私はあなたに多くの質問をしていると思います。人々はこれまでと同じようなことをやっていないとは言いません(例えば、C++上で動作する「改善」としてのC++言語)。

0

オープンソースのMacアプリケーションRuby Regexp Machine(http://www.rubyregexp.sf.net)を試してみてください。それはルビーで書かれているので、あなたがMacにいなくても、コードのいくつかを使うことができます。簡単な英語の文法で、多くの簡単な正規表現を記述することができます。開示として、私はこのツールを作った。