【问题标题】:How to match this string use Regex?如何匹配这个字符串使用正则表达式?
【发布时间】:2018-04-23 03:04:11
【问题描述】:

我有两个字符串:

(123)4567890
1234567890

() 对必须都存在,或者都省略。目前我使用这个正则表达式:

(?:(?:\(\d{3}\))|(?:\d{3}))\d{7}

使用OR 匹配两种情况之一:

\(\d{3}\)
\d{3}

只是为了好奇,我如何检查当前比赛中的最后一场比赛(是否有()(检查))? 你能建议我用另一种方法来达到同样的效果吗?

【问题讨论】:

  • 使用条件从句的绝佳机会,但 Wiktor 打败了我。您还可以使用简单的交流发电机来获得更笨重但更易于阅读的解决方案(如果这是一个问题)^(?:\(\d{3}\)\d{7}|\d{10})$
  • @WiktorStribiżew 感谢您的解决方案。完美运行。

标签: c# regex string-matching parentheses


【解决方案1】:

您可以使用conditional construct:捕获一个可选的开头(然后匹配3位数字,然后检查第1组是否为空,如果不是,则匹配结尾)

(\()?\d{3}(?(1)\))\d{7}

请参阅regex demo。根据要求添加锚点/边界。

详情

  • (\()? - 与 ( 字符匹配的可选捕获组 1
  • \d{3} - 3 位数
  • (?(1)\)) - 如果第 1 组匹配,则匹配 )
  • \d{7} - 7 位数字。

【讨论】:

  • 感谢您的解决方案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
  • 2012-06-05
相关资源
最近更新 更多