去 RE2 正则表达式重复组有条件

问题描述

我正在使用 RE2 表达式来解析具有多种形式的数据并挑选出 4 个数字的四元组。例如:

  1. 1111.2222.3333.4444
  2. 1111.2222,3333,4444
  3. 1111 2222 3333 4444
  4. 1111.2222 3333.4444
  5. 1111 2222.3333 4444

目前我使用这个:([0-9]{4}[.,\s]){3}[0-9]{4} 这绝对没问题并提供结果。现在我需要改进表达式,以便用作分隔符的第一个字符将被带到匹配的其余部分。因此,在示例中,数字 1 被一个点整除,而数字 2 是混合的。我只需要匹配具有相同分隔符的那些,而不匹配那些不匹配的。 我让它起作用的唯一方法是使用多个表达式来检测单个字符,例如这个点的示例:([0-9]{4}[.]){3}[0-9]{4} 或这是逗号 ([0-9]{4}[,]){3}[0-9]{4} 好吧,它们工作得很好,但我相信有一种更优雅的方式来表达这一点。

我也试过 ([0-9]{4}[.]){3}[0-9]{4}|([0-9]{4}[,]){3}[0- 9]{4} 也可以与 OR 运算符一起使用,但又显得不够优雅。我在追求在 RE2 上无法完成的事情吗?

(编辑:不应该在没有先检查的情况下从内存中输入正则表达式!)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)