在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小时内删除。