输入掩码到正则表达式

时间:2012-01-07 15:16:29

标签: c++ regex

我有一个输入掩码是'DDDWD'。

我必须针对此输入掩码验证字符串。但是要做到这一点,我必须使该掩码中的每个角色都有意义进行验证!

即:

D = 0-9
W - a-z

我打算将这些信息存储在地图中,当我在掩码上检索输入掩码循环,然后通过在地图中搜索{{1}将所有D更改为0-9并将其更改为相应的值,依此类推。接下来,我可以使用正则表达式

来使用这些值

有没有人更好地将输入掩码更改为含义?

DDDDWD并使用正则表达式中的那些?

1 个答案:

答案 0 :(得分:0)

您可能需要添加单词边界\b或字符串开始/结束标签^$

不确定是否要使用不区分大小写的标志flags=re.I

mappings = { "D": "0-9", "W": "a-z" }
def test_input_mask(mask: str, input: str) -> bool:
  #regex = r'\b' + "".join([ '['+mappings[char]+']' for char in mask ]) + r'\b' 
  regex  =   '^' + "".join([ '['+mappings[char]+']' for char in mask ]) +  '$' 
  match  = re.match(regex, input, flags=re.I)
  return bool(match)

test_input_mask("DDDWD", "123a4")     # True
test_input_mask("DDDWD", "123a4567")  # False