如何匹配前面有(正向后看)的字符

  • 本文关键字:字符 何匹配 前面 regex
  • 更新时间 :
  • 英文 :


我想匹配纬度和经度条目,用逗号分隔,并可能使用名称:

应该匹配

-43.48394, 87.394886
-43.44884, 88.344774, home
-43.87778, 88.987566,

不匹配

-43.89987, 89.345434 home
-43.44884, 88.344774, home, restaurant 

这是我已经尝试过的,

^(-?d+(.d+)?),s*(-?d+(.d+)?),?(?<=,)[a-zA-Z ]*$

但无法匹配

-43.48394, 87.394886

我在这里错过了什么?

感谢

-43.48394, 87.394886字符串不匹配,因为您需要在经度值之后出现逗号。,?(?<=,)部分只等于,,因为此模式匹配一个可选的逗号,该逗号后跟一个必须以逗号开头的位置。

可以使用

^(-?d+(?:.d+)?),s*(-?d+(?:.d+)?)(?:,[a-zA-Z ]*)?$

参见regex演示。

:

  • ^-字符串
  • 起始
  • (-?d+(?:.d+)?)-组1:可选的-,一个或多个数字,然后是一个点和一个或多个数字的可选序列
  • ,-逗号
  • s*-零或多个空白
  • (-?d+(?:.d+)?)-组2:可选的-,一个或多个数字,然后是一个点和一个或多个数字的可选序列
  • (?:,[a-zA-Z ]*)?-一个可选的逗号序列,然后是零个或多个字母或空格
  • $-字符串结束

最新更新