试图获得正确的正则表达式

时间:2016-11-21 04:15:28

标签: python regex python-3.x

我试图让正确的数字范围与三个字母中的每一个相关联! 这是我到目前为止:\w*[EWO]-\d{1,2}

问题如下:
美国政府雇用的人员被分配一个确定其年薪的薪资等级。薪资等级是以字母E,W或O(每个都是大写字母)开头的代码。第一个字母后跟一个破折号,然后恰好是一个或两个数字。有效的E工资等级从1上升到9.有效W工资等级从1上升到5.有效O工资等级从1上升到10.有效的工资等级分类包括E-1,W-5,O-1和O-10。无效薪资等级分类的示例是E-10,W-6和O-20。

1 个答案:

答案 0 :(得分:0)

如果该字母为O,则O-10有效。正则表达式:O-10

如果字母是O,则O-1到O-9有效。正则表达式:O-[1-9]

如果字母是E,则E-1到E-9有效。正则表达式:E-[1-9]

如果字母是W,则W-1到W-5有效。正则表达式:W-[1-5]

使用替换方式将它们放在一起:O-10|O-[1-9]|E-[1-9]|W-[1-5]

唯一的技巧是确保最长的匹配是第一次。您必须首先放置O-10,否则O-10将与O-[1-9]匹配,并且它不会与零匹配。

最后,由于O-[1-9]E-[1-9]都有效,我们可以合并它们,提供:O-10|[EO]-[1-9]|W-[1-5]