に一致するフレーズやテキストを正規表現するために、ワイルドカードを追加します。は私がで構成されていたテキストファイル持って
- を言葉(例えばmanipulat - 「操作」から茎を)茎、および
- は通常2つあるフレーズ茎(例えば、 "投資については彼に感謝する" - 「投資については彼に を認めているから」)。
各単語/句は新しい行に表示されます。私のC#コードは、このテキストファイルの各行を読み込み、各行について、DataTableのすべての行を検索して一致させます。すなわち、単語/句がDataTableの任意の行に表示される場合、私のシステムはその行にフラグを立てる。
単一の単語については、それは私が持っているアルゴリズムを使用して簡単に実行/照合される。 DataTableの行に表示される場合、「操作する」、「操作する」、「操作する」、「操作する」などの単語に「操作」を対応付けることができます。
しかし、フレーズの場合、私のアルゴリズムは正確に一致するだけです。ここでは、私のフレーズが「投資を考慮していることを認めて」いる場合は、正確なフレーズを検索し、「投資に関して彼を認めている」がDataTableの行に存在する場合は一致/フラグになりません。
私はRegexとC#の知識がほとんどありません。ワイルドカードを使用するために以下のコードを修正しようとしましたが、これまでのところ運がありません。誰でもこれを助けることができれば感謝します。進んでいただきありがとうございます。
RegEx
を使用して、データベースからの幹-言葉で行を比較するときに、あなたのコード内であなたのパターンを拡張することができ
string[] words = File.ReadAllLines(sourceDirTemp + comboBox_filename.SelectedItem.ToString() + ".txt");
var query = LoadComments().AsEnumerable().Where(r =>
words.Any(wordOrPhrase => Regex.IsMatch(r.Field<string>("Column_name"), @"\b"
+ Regex.Escape(wordOrPhrase) + @"\b", RegexOptions.IgnoreCase)));
あなたは彼がinvest'になると考えるacknowledg '、すなわちを正規表現パターンであることをフレーズを変更することができ、' acknowledg [-Z] *彼は考えて[-Z] *投資[-Z] * '。 –
問題があります:あなただけのスペースで 'wordOrPhrase'を分割し、それぞれに' 'W * \追加した場合、あなたはhim''と 'himself'と一致する可能性(つまり、' W * \ '彼に変身することでしょう。とにかく、この上のあなたの計画? –
、私がお勧めすることは 'Regex.IsMatch(r.Field( "Column_nameの")、string.Join( "+" で、 \t \t \t wordOrPhrase.Split()。を選択した(p何ですか=> String.Formatの(@ "\ Bの{0} \ *の\ BのW"、Regex.Escape(P))))、RegexOptions.IgnoreCase) ' –