gpt4 book ai didi

c - Lex/Flex - 拆分电话号码?

转载 作者:行者123 更新时间:2023-11-30 15:30:40 25 4
gpt4 key购买 nike

我正在制作一个程序,该程序必须将电话号码分开,每个部分都用连字符(或空格,或“()”或空)分隔。

Exp:输入:0xx-xxxx-xxxx 或 0xxxxxxxxxx 或 (0xx)xxxx-xxxx
输出:代码 1:0xx
代码 2:xxx
代码 3:xxx
但我的问题是:有时“代码 1”只是 0x -> 所以“代码 2”必须是 xxxxx(第一部分在 2 位数字长时总是有连字符或括号)

任何人都可以帮助我,我将不胜感激。

最佳答案

根据您的评论,以下正则表达式将提取您需要的信息

^\(?(0\d{1,2})\)?[- ]?(\d{4,5})[- ]?(\d{4})$

segmentation :

  • ^\(?(0\d{1,2})\)? 匹配 0x0xx( 0xx)(0x) 在字符串的开头
  • [- ]? 因为括号只能用于第一组,剩下的唯一有效分隔符是空格和连字符。 ? 表示 0 次或 1 次。
  • (\d{4,5}) 将匹配第二组。由于第三组的长度是固定的(4位),正则表达式将自动计算Group1和Group2的长度。
  • (\d{4})$ 匹配数字末尾的 4 位数字。

See it in action

您可以从捕获组 1,2 和 3 中提取数据

注意:正如OP的评论中提到的,这只从正确形成的数字中提取数据。它将匹配一些格式错误的数字。

关于c - Lex/Flex - 拆分电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25500865/

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