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

Python regex: Using Alternation for sets of words with delimiter

我想匹配一个字符串,其字符串元素应仅包含特定字符:

我提供的正则表达式如下

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

"(I|II|III|IV|V)" 部分将 return 对 test_str='C5.3IV' 为真,但我想让它为真,即使两个罗马数字同时出现并带有分隔符 / 即正则表达式查询也应该为 test_str='C5.3IV/V' 重新运行。

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

谢谢

将定界符和罗马数字分组,像对待float/int中的小数点一样对待(不知道会不会出现,但最多只出现一次)。希望这对您有所帮助!

试试这个:

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] 方括号之间的字符形成 character class。这样的 class 匹配一系列选项中的一个字符。您最常看到的是 [A-Z0-9] 这样的范围来匹配大写字母或数字,但您也可以添加单个字符,就像我为您的正则表达式所做的那样。