问题描述
我正在使用 RE2 表达式来解析具有多种形式的数据并挑选出 4 个数字的四元组。例如:
- 1111.2222.3333.4444
- 1111.2222,3333,4444
- 1111 2222 3333 4444
- 1111.2222 3333.4444
- 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 (将#修改为@)