我需要一个正则表达式来匹配一个格式如下的字符串:
2014-08-06T21:02:16Z,-33.7939310,151.0553090,-0.8
我是否必须为每个数字使用//d
?负数怎么样?
答案 0 :(得分:1)
这个怎么样:
/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z,-?\d{2,3}\.\d{7},-?\d{2,3}\.\d{7},-?\d{1,2}\.\d/
例如,\ d {4}表示“4位数”, - *表示“0或更多短划线”,因此应匹配正数或负数。
通过使用这样的可能字符组,您也可以更通用:
/[0-9-]{10}[0-9TZ:]{10},[0-9-.,]{26,28}/
即,10个字符的任何数字或短划线,数字或字母T或Z或10个字符的冒号,然后是逗号,以及26-28个字符的数字,短划线,句号或逗号。这不像上面的正则表达式那么严格,但根据您的要求可能就足够了。
以上适用于javascript和perl,这里是R版本(双重转义):
s <- "2014-08-06T21:02:16Z,-33.7939310,151.0553090,-0.8"
grep("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z,-?\\d{2,3}\\.\\d{7},-?\\d{2,3}\\.\\d{7},-?\\d{1,2}\\.\\d", s)
答案 1 :(得分:0)
^\d{4}-\d{1,2}-\d{1,2}T\d{2}:\d{2}:\d{2}Z,-?\d*\.?\d*,\d*\.\d*,-?\d*\.\d*$
试试这个。参见demo.Set标志m
。