这是一个关于正则表达式的简单问题,但我找不到答案。
我想确定一个数字是按顺序出现,确切地说是,2,还是,四次。我可以使用什么语法?
\d{what goes here?}
我尝试了\d{2,4},但是这个表达式也接受三个数字。
发布于 2011-11-18 02:46:33
这方面没有具体的语法,但是有很多方法可以做到:
(?:\d{4}|\d{2}) <-- alternation: four digits if possible, else just two
\d{2}(?:\d{2})? <-- two digits, plus two more if possible
(?:\d{2}){1,2} <-- two digits, times one or two因此,例如,要匹配由一个或多个字母and后面的两个或四个数字组成的字符串,您可以写^[A-Z]+(?:\d{4}|\d{2})$;为了匹配由两位或四位数字组成的逗号分隔的列表,您可以写^((?:\d{4},|\d{2},)*(?:\d{4}|\d{2})$或^(?:\d{2}(?:\d{2})?,)*\d{2}(?:\d{2})$。
发布于 2020-04-30 07:42:39
(?<!\d)(\d{2}|\d{4})(?!\d)这是正确的方法。公认的答案是错误的。
它将匹配3位数字(或5位)。所以在我看来这是不对的。
1)在序列为2或4位之前,或在2或4位序列之后,检查没有数字。
(<!)语法是负查找的(?!)语法是负前瞻性的。上述方法适用于中间字符串:
如果搜索字符串周围没有内容,则可以使用字符串锚点的^和$开始和结束:
^\d{4}$|^\d{2}$https://stackoverflow.com/questions/8177143
复制相似问题