在C语言中,正则表达式库通常是PCRE(Perl Compatible Regular Expressions)。以下是一个使用PCRE来验证经纬度的例子:
#include <stdio.h>
#include <pcre.h>
// 经纬度正则表达式
#define LATLONG_REGEX "^([+-]?([0-9]|[1-9][0-9]|1[0-7][0-9])(?:\\.[0-9]{1,10})?)([°'"]?),[\\s]*([+-]?((1?[0-7]?[0-9])|([0-9]|[1-9][0-9]|1[0-8][0-9])(?:\\.[0-9]{1,10}))(?:[°'"]?))?$"
int is_valid_latlong(const char *str) {
const char *error;
int erroffset;
pcre *re;
// 编译正则表达式
re = pcre_compile(LATLONG_REGEX, PCRE_MULTILINE, &error, &erroffset, NULL);
if (re == NULL) {
// 正则表达式编译出错
printf("PCRE compilation failed at offset %d: %s\n", erroffset, error);
return 0;
}
// 匹配正则表达式
int rc = pcre_exec(re, NULL, str, strlen(str), 0, 0, NULL, 0);
// 释放正则表达式资源
pcre_free(re);
// 匹配成功返回1,失败返回0
return rc >= 0;
}
int main() {
const char *latlong_str = "47.62055555555556° -122.34933333333333°";
if (is_valid_latlong(latlong_str)) {
printf("The string is a valid latitude and longitude.\n");
} else {
printf("The string is NOT a valid latitude and longitude.\n");
正则化坐标 }
return 0;
}
这段代码首先定义了一个经纬度匹配的正则表达式LATLONG_REGEX,然后实现了一个函数is_valid_latlong来使用这个正则表达式来验证一个字符串是否是有效的经纬度格式。最后在main函数中测试了这个功能。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论