0

.NETには、\ wのすべての値を列挙する方法がありますか?

なぜ私が未知のファイルから単語を解析しているのかについて。非標準に過ぎない埋め込みを使用するいくつかのファイルに出くわします。以下のサンプルを参照してください

"PK!RýëÙ* [Content_Types] .xml¢(Ì?ÍNã0?÷Hó?・£Æ530̨)?Y!@?ycß6VÛò5о= 7)T *" "" "áM«üø?ïºÕ?Ïä|ÙØâ" " ï*&Ê1+À)¯?Wìÿý¿Ñ+0I§¥õ*¶dçÓoG?ûU、hµÃ?Õ)???£ª¡?Xú??Ì|ld¢Ë8çAª???O¹ò.K£Ôj° éä/Ìä£MÅå?n¯I?cÅÅú½Öªb2k?LÊ??〜g2ò³?Q½zlHºÄAj¬RcË9Æ; H?CÆwzF°ØÏôuª?Vv`X ??ßiôÚ'Oõºî?〜?h4・2 〜?¾[ÓmQÙHãÞ¸÷øw/#ï¾ÄÀí| pO?ãL8〜dÂñ3??L8N3áø?ÇY&¿3áã\ @ rIT?K¤?\2Uäª?T¹ÄªÈ%WÅW+Щ9:i¯?[

これはプリンターファイルへの出力だったと思います。

私がゴミの言葉と呼んでいるものをどうにかして排除する必要があります。完璧である必要はありません。計画では、インデックスに含まれていないゴミの単語でドキュメントにマークを付けて、ユーザーが手動で簡単に確認できるようにします。

私がやることをやめるかもしれないのは、安全な文字(a、b、c、...)のリストから数えることです。同様に、1つの安全な文字または1/2を超える安全な文字を保持する必要があります。カフェを維持したいように。ゴミの言葉はすべてゴミになる傾向があります。これは、たまたま安全な文字が含まれているゴミの単語ª'_LLýúです。

この時点で、私は戦場を評価しています。

ビジネスの性質上、意図的にごみ箱ファイルが送信される場合があります。

誰かが気にした場合に備えて私は一緒に行きました

rSafeChar = new Regex(@"[-_'@A-Za-z0-9]");

safeCharCount > unsafeCharCountまたはでいじるsafeCharCount >= unsafeCharCount

4

1 に答える 1

2

\ wと一致するものを確認するには、ASCIIテーブル全体を含む文字列を使用し、次の正規表現を使用します。

(?:(?<wmatch>\w)*(?<wnotmatch>[^\w]*))*

結果のグループには、\wと一致する文字と一致しない文字のリストが含まれている必要があります。

次に例を示します。

private void TestMatch()
{
  string ascii = "abcdef0934+_!1@_$14-195djsjfke1058446541";
  Regex r = new Regex(@"(?:(?<wmatch>\w)*(?<wnotmatch>[^\w]*))*");
  Match m = r.Match(ascii);
  if (m.Success)
  {
    string msg = "\\w matches :";
    foreach (Capture cap in m.Groups["wmatch"].Captures)
    {
      msg += cap.Value + ", ";
    }
    msg += Environment.NewLine + "\\w does not match: ";
    foreach (Capture cap in m.Groups["wnotmatch"].Captures)
    {
      msg += cap.Value + ", ";
    }
    MessageBox.Show(msg);
  }
}

ショー:

\\w matches :a, b, c, d, e, f, 0, 9, 3, 4, _, 1, _, 1, 4, 1, 9, 5, d, j, s, j, f, k, e, 1, 0, 5, 8, 4, 4, 6, 5, 4, 1,  
\\w does not match: +, !, @, $, -, "
于 2012-09-03T14:15:08.020 に答える