我坚持遵循正则表达式。我的意图是匹配以下
abc_123_v1_f1_t21
12c_1sdsd_f1_t1
Android_v1_t21
我正在尝试的正则表达式是
_(v[1-9]{1,3}\d?_f[1-9]{1,3}\d?_t[1-9]{1,3}\d?)(?!\d)
如果我的名字不包含序列(v_f_t),我将无法获得正则表达式匹配。 当我有像 without v 或 f 或 t 至少应该存在两个模式时,如何获得正则表达式匹配。 v_t 或 f_v 或 f_t 或 v_f_t 或 f_t_v 等
如果我给 adcg_f1_t1 它应该匹配
如果我给 adcg_v2_f1 它应该匹配
如果我给 adcg_v2_t12 它应该匹配
如何做到这一点?
你可以使用
(?:_[vft][1-9]{1,3}\d?){2,3}(?!\d)
请参阅 正则表达式演示。
详情:
(?:_[vft][1-9]{1,3}\d?){2,3}
- 出现两次或三次
_
- 下划线[vft]
- v
/f
/t
[1-9]{1,3}
- 一位、两位或三位非零数字\d?
- 可选数字(?!\d)
- 右侧不允许有数字。正则表达式,
(?:_[vft]\d{1,3}){2}(?:_[vft]\d{1,3})*
满足您的要求。
(?:_[vft]\d{1,3}){2}
:出现两次的非捕获组。该组包含一个 _
,后跟一个 v
/f
/t
,然后依次跟随一到三位数字(?:_[vft]\d{1,3})*
:非捕获组,出现次数为零到无限次。该组包含一个 _
,后跟一个v
/f
/t
,然后依次跟随一到三位数字