如何匹配4个字符然后跳一个字符(这对我来说是未知的,所以无论是其他中文还是特殊字符的出现)在4个字符之后又跳了一个字符(对我来说是未知的,所以无论如何再例如其他一些中文或特殊字符出现4等。
我的检查字符串:1234 4567 7891 0934 这是16位字符,每个4个字符用空格分隔。
主字符串: “帐号编号名称声明日期付款日期1234 4567 7891 0934 Jane Doe 2009年1月1日02/26/09信用额度可用的新余额最低付款期限信用额。”
上方文本(主字符串)来自PDF文档。是由 OCR 引擎提取的。 因为Main字符串有我的检查字符串,但是它用一些未知的char而不是空格分隔。我尝试在Visual Studio的即时窗口中使用#替换空格。但是Main字符串的check字符串之间的空间没有被替换。因此,我可以说这是非ASCII字符,但看起来像是空格。
我可以通过以下代码摆脱此问题:
string asAscii = Encoding.ASCII.GetString(
Encoding.Convert(
Encoding.UTF8,
Encoding.GetEncoding(
Encoding.ASCII.EncodingName,
new EncoderReplacementFallback(string.Empty),
new DecoderExceptionFallback()
),
Encoding.UTF8.GetBytes(inputString)
)
);
但是,我想了解Regex解决方案。 即使发生了非ASCII字符,也应与正则表达式匹配以检查是否存在。
答案 0 :(得分:1)
如果不确定这4位数字之间的字符是否为空格,可以使用与任何字符匹配的.
字符,并使用此正则表达式匹配由4个数字组成的组,并用看似未知的角色。
\d{4}.\d{4}.\d{4}.\d{4}
如果要访问这组4位数字,则可以将它们放在组中,并使用此正则表达式中的所有四个分组模式进行访问,
(\d{4}).(\d{4}).(\d{4}).(\d{4})
让我知道您的查询是否仍然无法解决。