gpt4 book ai didi

c# - 如何从长描述字段中提取联系电话?

转载 作者:太空宇宙 更新时间:2023-11-03 18:27:05 25 4
gpt4 key购买 nike

这是我的长输入字符串,其中包含此字符串之间的联系电话,如下所示:

sgsdgsdgs 123-456-7890 sdgsdgs (123) 456-7890 sdgsdgsdg 123 456 7890 sdgsdgsdg 123.456.7890 sdfsdfsdfs +91 (123) 456-7890

现在我想提取所有输入数字,例如:

123-456-7890
(123) 456-7890
123 456 7890
123.456.7890
+91 (123) 456-7890

我想将所有这些数字存储在数组中。

这是我尝试过但只得到 2 个数字的方法:

string pattern = @"^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*$";
Regex reg = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);

var a = txt.Split();
List < string > list = new List < string > ();
foreach(var item in a) {
if (reg.IsMatch(item)) {
list.Add(item);
}
}

谁能帮我解决这个问题??

最佳答案

不要为此使用Split

只需遍历比赛并获得他们的Groups[0].Value,应该是这样的:

foreach (var m in MyRegex.Match(myInput).Matches)
Console.WriteLine(m.Groups[0].Value);

regexhero 上测试:

  1. 正则表达式:\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?:[ ]*x(\d+))?\s*
  2. 输入:sgsdgsdgs 123-456-7890 sdgsdgs (123) 456-7890 sdgsdgsdg 123 456 7890 sdgsdgsdg 123.456.7890 sdfsdfsdfs +91 (123) 456-7890/7890
  3. 输出:5 个匹配项

    • 123-456-7890
    • (123) 456-7890
    • 123 456 7890
    • 123.456.7890
    • +91 (123) 456-7890

编辑:regexhero 不喜欢最后一组中的空格,不得不将其替换为 [ ]

关于c# - 如何从长描述字段中提取联系电话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32004229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com