在.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 > unsafeCharCount
或safeCharCount >= unsafeCharCount
答案 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: +, !, @, $, -, "