我们已经相当擅长生成各种正则表达式来匹配输入字符串,但是我们被要求尝试迭代地验证这些字符串。有没有一种简单的方法可以将输入字符串与正则表达式进行迭代匹配?
以下面的正则表达式为例:
[EW]\d{1,3}\.\d
当用户输入“E123.4”时,满足正则表达式。我如何在用户键入时验证用户的输入?我可以将字符串“E1”与正则表达式部分匹配吗?
有没有什么方法可以说输入字符串只部分匹配输入?或者有没有一种方法可以根据字符串长度自动从主表达式中生成子表达式?
我正在尝试创建一个通用函数,它可以采用任何正则表达式并在用户输入不符合该表达式的内容时立即抛出异常。我们的表达式在事物的宏伟计划中相当简单,我们当然不会尝试解析 HTML :)
提前致谢。 大卫
最佳答案
您只能通过将正则表达式的每个部分设为可选并重复自己来做到这一点:
^([EW]|[EW]\d{1,3}|[EW]\d{1,3}\.|[EW]\d{1,3}\.\d)$
这可能适用于简单的表达式,但对于复杂的表达式来说这几乎不可行。
关于c++ - 迭代正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1758566/