正则表达列表全部\ w

时间:2012-09-03 14:05:23

标签: .net regex

在.NET中有没有办法枚举\ w的所有值?

至于为什么我要解析未知文件中的单词。会遇到一些使用嵌入的文件,这些文件只是非标准的。见下面的示例

“PKRýëÙ* [CONTENT_TYPES] .XML¢(IÍNã0÷HO·£Æ530̨????)Y @ycß6VÛò5о= 7)T *!?!?” “”“AM«UOïºÕIA?| UOA”,“I *&安培; E1 + A)‾ +Wìÿý¿Ñ¥0I§õ*¶dçÓoGUU,hμÃÕ)???£ª¡许?? I | LD¢Ë8çAª???O¹ò???? .K£OJ°EA / IA£MAA NIcÅÅú½Öªb2kLÊ??〜g2ò³Q½zlHºÄAj¬RcË9AE;???????2 HCÆwzF°ØÏôuªVv`X ??ßiôÚ'Oõºî〜H4·2|库地|iù³襄樊〜¾[ÓmQÙHãÞ¸÷OW /#ï¾ÄÀI | PO AL8〜dÂñ3??L8N3áøCY和安培;¿3AA \ @rITK¤\2UäªT¹ÄªÈ%WAW + d©9:???????我¯?[

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

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

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

此时我正在评估战场。

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

如果有人关心我去了

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

使用safeCharCount > unsafeCharCountsafeCharCount >= unsafeCharCount

进行游戏

1 个答案:

答案 0 :(得分: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: +, !, @, $, -, "