0

正規表現を使用してテキスト (方程式) を検索しています。

私はこのようなものを持っているかもしれません

(A) (x + 5) (( testthis ))

単語全体または単語の一部のみを検索するオプションがあります。

上記の例で満たしたいいくつかの条件を次に示しますが、私が試したオプションではうまくいかないようです

  1. 単語全体を検索すると(A)、一致が返されます。
  2. 単語全体を検索してAも、一致が返されません。
  3. の部分単語検索はA、一致を返す必要があります。
  4. ((を囲む括弧の両側にスペースがあるため、単語全体を検索すると一致が返され(( testthis ))ます。

以下のコードと、 などの他の多くの組み合わせを試しました\\b \\b* \\S* \\W

基本的に \b と同じ機能が必要ですが、英数字以外の文字をサポートしています。

if (bWholeword == true)
{
      matchText = "\\s*" + Regex.Escape(term) + "\\s*";
}
else
{
      matchText = Regex.Escape(term);
}
4

1 に答える 1

1
matchText = bWholeword 
             ? (@"(^|(?<=[\b\W|_]))" + term + @"($|(?=[\b\W|_]))") 
             : term;

(^|(?<=[\b\W|_]))文字列の先頭、または英数字以外のいずれかに一致します(ただし、用語を取得するだけです)。そして最後も同じ。

あなたの用語が(または類似しているとき、それはトリッキーになります。(どちらも単語全体であり、英数字以外の文字を囲んでいるため、それぞれに 1 回一致します。

于 2013-10-31T20:53:02.950 に答える