Python 正则表达式:对带有分隔符的单词集使用交替



我想匹配字符串元素应仅包含特定字符的字符串:

  • [A,C,K,M,F] 中的第一个字符
  • 后跟一个数字(浮点数或整数(。允许的实例:1,2.5,3.6,9,0,6.3 等。
  • 以这些罗马数字中的任何一个结束 [I, II, III, IV, V]。

我提供的正则表达式如下

bool(re.match(r'(A|C|K|M|F){1}d+.?d?(I|II|III|IV|V)$', test_str))

"(I|II|III|IV|V)"部分将返回 true 对于test_str='C5.3IV'但我想让它成为真,即使两个罗马数字同时存在一个分隔符/即正则表达式查询也应该重新运行 true test_str='C5.3IV/V'

我应该如何修改正则表达式?

谢谢

试试这个:

bool(re.match(r'[ACKMF]d+.?d?(I|II|III|IV|V)(/(I|II|III|IV|V))*$', test_str))

我还将您的表达式的开头从 (A|C|K|M|F){1} 更改为 [ACKMF] 方括号之间的字符形成字符类。此类匹配一系列选项中的一个字符。您最常看到它们的范围为 [A-Z0-9] 以匹配大写字母或数字,但您也可以添加单个字符,就像我为您的正则表达式所做的那样。

将分隔符和罗马数字分组,并以处理浮点数/整数中小数点的方式对待它(您不知道它是否会出现,但它最多只会出现一次(。希望这有帮助!

最新更新