为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式 如何根据某个条件是否成立,来选择匹配 2 个可选表达式中的其中一个。

正则表达式 如何根据某个条件是否成立,来选择匹配 2 个可选表达式中的其中一个。

繁星淼淼 2019-03-14 18:19:16
场景:原先有一个字符串的内容匹配,现在这个字符串改成了另一种样子。但是对于已经发版的客户端还要支持旧版的字符串匹配。例:旧字符串: android/360 1.0新字符串: android/aaa/360/1.0现在想写一个正则表达式,既想能匹配旧字符串,也想匹配新字符串。有没有办法根据某个条件成立,来选择其中一种表达式?旧表达式匹配正则:([iOS|android])\\scoco/([\\S\\s])\\s([\\S]*)旧正则测试字符串android coco/360 1.0新表达式匹配正则:"([iOS|android])[\\s|\\S]coco/([\\S])/([\\S])/([\\S])/([0-9])";新正则测试字符串:android coco/android_deviceId/360/1.0/123456如何让一个正则,既可以支持新的,也可以支持旧的?([iOS|android]*)[\\s|\\S]coco/[([\\S\\s]*)\\s([\\S]*)]  `**|**`  [([\\S]*)/([\\S]*)/([\\S]*)/([0-9])]类似于上面这个错误的正则思路。 该如何写?
查看完整描述

2 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

你这样两个字符串差别已经很大了,就没有必要压缩到一个正则里了,直接分成两次正则判断更为妥当。

正则里没有根据条件来选择匹配规则的定义,像你这种情况用的还是 | 进行或匹配而已。其效果和使用两次正则没什么区别。


查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 1965 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信