正则表达式匹配已分割为多行的哈希

时间:2013-12-17 23:42:17

标签: c# regex

我想匹配一个由作者自己包装的哈希,并通过多行接收。

例:

  SHA256:AB76235776BC87DBAB76235776BC87DBAB76235776BC87
  DBAB76235776BC87DB

已收到。我通常的正则表达式匹配像这样的sha256哈希当然是:[0-9A-Fa-f] {64}

但这不起作用。我想在搜索此匹配时保留文件未经修改,有关如何匹配拆分哈希而不删除换行符的任何想法?

我希望有一个正则表达式,基本上说'查找64个连续十六进制值,但允许混合中的一个或多个换行符,kthx'

提前致谢。 C#是语言。

2 个答案:

答案 0 :(得分:2)

试试这个:

\b(?:[a-fA-F0-9]\s*){64}\b

它允许任何类型的空格,而不仅仅是行分隔符。如果它真的只允许行分隔符,你可以使用它:

\b(?:[a-fA-F0-9][\r\n]*){64}\b

这还将包括数字后面的行分隔符(如果有),以及后跟单词字符。你可以这样阻止:

\b(?:[a-fA-F0-9][\r\n]*){63}[a-fA-F0-9]\b

答案 1 :(得分:1)

更改正则表达式以包含换行符:

[A-Z0-9a-z\\r\\n ]{64, }

您可以修改上限以包含对换行符数量的限制 在这种情况下,您需要记住,换行符可以是2个符号长,具体取决于机器文化和操作系统。

  

1个换行符 - > 66个字符   2个换行符 - > 68个字符   尽可能多地继续。

旁注。解析文件时,通常会让它休息。您使用读入文件的变量进行所有修改。这就是为什么我没有看到保持线路突破的原因。