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¦kÙÐì|iù³?ïå ~?¾[ÓmQÙHãÞ¸÷øw/#ï¾ÄÀ í|pO?ãL8~dÂñ3??L8N3áø? ÇY&¿3áã\@rIT?K¤?\2Uäª?T¹ÄªÈ%WÅW+Щ9:i¯?[

我认为这是打印机文件的输出。

需要以某种方式消除我所说的垃圾词。它不需要是完美的。该计划是用索引中未包含的垃圾词标记文档,以便用户可以轻松地进行手动查看。

我可能会结束做的是从安全字符列表(a,b,c,...)中计数。就像它必须保留一个安全字符或超过 1/2 个安全字符。就像我想保留咖啡馆一样。垃圾词往往都是垃圾。这是一个垃圾词ª'_LLýú,恰好有一些安全字符。

在这一点上,我正在评估战场。

业务的性质可能是故意发送垃圾文件。

万一有人在乎我和我一起去

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

玩弄safeCharCount > unsafeCharCountsafeCharCount >= unsafeCharCount

4

1 回答 1

2

To check what can be matched by \w one could use a string containing the whole ascii table and use the following regex :

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

The resulting groups should contain the list of characters matched and not matched by \w.

Here is an example :

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);
  }
}

Shows :

\\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 回答