c# Regex如何获取数字

本文关键字:获取 数字 Regex 何获取 | 更新日期: 2023-09-27 18:18:49

如何从下一个文件名获取电话号码

  1. 09-33-07[9312886109902]"DN_9405 ~"(44,0,0,0). wav
  2. 08-47-51[9309854699902]"DN_9405 ~"(44,0,0,0). wav
  3. 07-58-49(9160页)"DN_9405 ~"(44,0,0,0). wav

我需要进一步

  1. 931288610
  2. 930985469
  3. 9160

现在我使用('d{4,})[^(9902])],但短数字是错误的

c# Regex如何获取数字

电话号码的长度为4-9?

(?<='[[a-zA-Z]+'s)'d{4,9}(?='d*'])
演示

您可以使用下面的正则表达式,它最多匹配9902或]符号,

(?<=[A-Z] ).*?(?=9902|])

演示

(?<=[A-Z] )'d+?(?=9902|])
演示

您正在搜索方括号、字母、空格、1+数字和方括号。所以正则表达式是:['[][A-Z].'d+[']]

但是因为你只想提取1+数字(数字),你需要使用()对它们进行分组,所以regex是['[][A-Z].('d+)[']]

接下来的代码很简单:

Regex regexp = new Regex("['[][A-Z].('d+)[']]");
foreach(var mc in qariRegex.Matches(yourstring))
{
    Console.Writeln(mc[0].Groups[1].Value);
}

你可以试试Lookaround

(?<='[[A-Z] )'d+?(?=9902']|'])

在线演示和测试在regexstorm

模式说明:

  (?<=                     look behind to see if there is:
    [[A-Z]                   any character of: '[', 'A' to 'Z'
  )                        end of look-behind
  'd+?                     digits (0-9) (1 or more times)
  (?=                      look ahead to see if there is:
    9902]                    '9902]'
   |                        OR
    ]                        ']'
  )                        end of look-ahead