1

ユーザーからステートメントを取得する入力があります。私のプログラムの使い方に応じて、ユーザーは文字または正規表現を入力できます。この入力を入力した後、ユーザーは置換テキストである 2 番目の入力を入力する必要があります。

問題は、ユーザーが入力できることです.。これは、任意の文字に一致する正規表現と同等です。

以下のコードは機能しますか? または、解決策は何ですか?

Match m = Regex.Match(input, pattern);
if( m.Success )
   // it's regex
else
  // it's not regex
4

2 に答える 2

5

ユーザーの心は読めない!

ユーザーが を入力した場合、リテラルに一致させたいのか、それを正規表現として使用して 2 ~ 3 文字...?に一致させたいのかを知る方法がありません。"...?"

を検索してもhello?、一致するとは思わないかもしれません"hell"でも、わざとやっているのかもしれません聞かなければわからない

それらにチェックボックスを与えてください!

于 2012-06-30T22:41:53.637 に答える
2

できません*。

Visual Studio がこの問題をどのように解決するかを見てみましょう。

ここに画像の説明を入力

ユーザーがコンテンツを正規表現にするつもりだったかどうかはわからないため、デザイナーはユーザーが選択できるようにし、ユーザーが検索の実行方法を完全に制御できるようにします。プレーン テキスト (デフォルト) にしたい場合は、[次を検索] をクリックします。それ以外の場合は、追加のオプションを使用して検索を調整できます。

*まあ、あなたはちょっとできる

この問題に対するもう 1 つのアプローチは、ユーザーがサポートするすべての手法を使用して検索するつもりであると想定し、結果をフィルタリングすることです。「プレーン テキスト」の一致と「正規表現」の一致でグループ化されます。これは効率的ではありませんが、ユーザーが積極的にオプションを選択する必要がないため、よりユーザーフレンドリーと見なすことができます。したがって、最初にプレーンテキストのみで検索し、「プレーンテキストの一致」という見出しの下でそれらの一致を返し、次に文字列が正規表現であると仮定して検索し、「正規表現の一致」という見出しの下でそれらの一致を返します。

これらをユーザーに表示すると、ユーザーは実際に置き換えを意味するものを選択できます。

于 2012-06-30T22:53:46.210 に答える