无法让正则表达式查找特定字符串和关联的数字

本文关键字:字符串 关联 数字 正则表达式 查找 | 更新日期: 2023-09-27 18:34:07

我正在编写一段代码,用于扫描上市公司税务文件(.txt文件)并提取信息。我正在尝试找到某些字符串,然后获取其后面的信息。此时,虽然我只是想找到字符串。我的正则表达式代码是:

 Regex regCIK = new Regex(@"'s^CENTRAL INDEX KEY:$'s'd+");
 string[] lines = File.ReadAllLines(fileName);
 foreach (string line in lines)
      {
           foreach (Match match in regCIK.Matches(line))
               Console.WriteLine(match);
      }

只是想找到一个匹配项,然后现在将其写入控制台以确保我真的得到了它。

我一直在尝试使用 https://regex101.com/正确使用正则表达式,但无法弄清楚。

我尝试获取的文本文件中的行如下所示:

        CENTRAL INDEX KEY:          ??????????

? 为数字 0-9。

无法让正则表达式查找特定字符串和关联的数字

^$分别匹配一行的开头和结尾,并且很可能不是您要查找的内容。删除它们(并允许多个带有*空格),它应该匹配:

Regex regCIK = new Regex(@"'s*CENTRAL INDEX KEY:'s*'d+");

事实上,你也不需要打开空间:

Regex regCIK = new Regex(@"CENTRAL INDEX KEY:'s*'d+");

正则表达式很难正确。

克拉符号^并不表示开始寻找匹配项,而是表示仅在字符串开头时才匹配匹配。与$相同,这意味着只有在所有这些之后字符串结束时才匹配我。

下面的正则表达式将匹配CENTRAL INDEX KEY: 1234567890死。

浏览正则表达式:

  1. 我们只在寻找"中央索引键:",没有引号开始我们的比赛
  2. 那么我们可以接受任何数量的空格在这句话和接下来的任何事情之间。那就是 ''s(空格)后跟 * 表示 0 或更多就在它之前,又名 ''s
  3. 最后,我们正在寻找任何数字,它必须是其中的 10 个。这是 ''d 标识符,后跟您希望在大括号{10}中的数量。如果我们想要 8,我们会做 ''d{8}或者 12 是 ''d{12}

Regex regCIK = new Regex(@"CENTRAL INDEX KEY:'s*'d{10}");