2

私は、正規表現を取り込んで、それが何をしているのかを取得する意味を与える正規表現バディを使用しますか? 同様の行で、一致/置換する必要があるパターンについて説明する自然言語入力を取得し、その説明に対して正しい(ほぼ正しい)正規表現を提供するエンジンを持つことは可能ですか?

例: 一部のファイルで「dio」という単語全体に一致

したがって、その正規表現は次のようになります:<dio> または

\bdio\b

-広告。

PS =これを「主観的な」「プログラミングとは関係のない」質問と考える人はほとんどいないと思いますが、それでもこの質問をする必要があります。自分のため。- ありがとう。

4

5 に答える 5

2

意味を導き出すことができる自然言語パーサーが必要なため、これをプログラムするのは複雑です。厳密なサブセットに制限しない限り (その場合、式言語を再発明することになり、最終的には正規表現に戻ることになります) より大きなシンボルのみを使用します。それで得は何ですか?

正規表現が開発されたのには理由があります。正規表現は可能な限り最も単純で正確な表現です。

Emacs用のSymbolix正規表現ビルダーパッケージがありますが、これを見ると正規表現の方が扱いやすいと思います。

于 2009-03-12T18:24:25.573 に答える
1

短い答え: いいえ、人工知能が大幅に改善されるまでは。

このようなものを書いた場合、構文は非常に制限されます。「一部のファイルで「dio」という単語全体に一致する」ことを誰かが知るには、基本的に、正規表現に関するかなりの知識が必要です。その時点で、正規表現を使用してください。

技術に詳しくないユーザーの場合、これは基本的な「このフレーズを検索する」または「?? で始まる/終わる行を検索する」に制限しない限り機能しません。彼らは次のようなことを思いつくことは決してありません:

小なり記号の後に文字列 'img' が続き、次の 1 つ以上のグループが続く行を検索します。その後に任意の長さの空白、次にスラッシュと大なり記号が続きます。

これは、この比較的単純な正規表現の平易なバージョンでの私の試みです。

/<img(\s+[a-z]+=("[^"]*"|'[^']*'))+\s*/>/i
于 2009-03-12T18:37:06.493 に答える
0

http://www.rubyregexp.sf.netで、オープン ソースの Mac アプリケーション Ruby Regexp Machine を試してください。ruby で書かれているので、一部のコードは Mac 以外でも使えます。簡単な英文法で簡単な正規表現をたくさん記述できます。開示として、私はこのツールを作成しました。

于 2011-07-01T15:39:13.703 に答える
0

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

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

于 2009-03-12T18:09:43.627 に答える
0

自然言語プロセッサを使用して正規表現を生成することは十分に可能です。Prolog は、この種の問題に適した言語の選択であると考えられています。ただし、実際には、正規表現を出力として提供する独自の入力言語を設計することになります。特定のタスクのために正規表現を生成することが目標である場合、これは実際に役立つ可能性があります。おそらく、実行中のタスクでは、実行可能であるが正規表現に組み込まれていない特定の定式化が必要になる傾向があります。これが正規表現を一度に 1 つずつ作成するよりも効果的かどうかは、プロジェクトによって異なります。通常、これは当てはまらないでしょう。なぜなら、あなた自身の言語は、正規表現ほどよく知られていないか、十分に文書化されていないからです。あなたの目標が、出力が正規表現として解析される正規表現の代替品を作成することである場合、私はあなただと思います. よく尋ねます。言うまでもなく、人々が以前に同じようなことをしたことがないというわけではありません (たとえば、もともと C++ で実行される「改良」としての C++ 言語)。

于 2009-03-12T18:55:27.980 に答える