我正在尝试验证遵循以下模式的文本:
匹配示例:
非常感谢任何帮助。
感谢。
答案 0 :(得分:4)
您可以在这里稍微分解一下,轻松构建正则表达式。
point(
,请使用 - ^point\(
[-]?\d+(?:\.\d+)?
)
,请使用\)$
。对于[-]?\d+(?:\.\d+)?
,这里有一个解释: -
[-]?
- 匹配起始处的可选negative (-)
符号(最后? quantifier
表示0或1)\d+
- 匹配一个或多个数字(?:\.\d+)?
- 匹配可选的decimal
,后跟one or more
digits
。点(。)是Regex中的一个特殊元字符,所以如果你想匹配它,你需要转义它。另外,要将您的位数限制为5
,您可以使用 - \d{1,5}
代替\d+
,它匹配最小1位和最多5位数。
^(caret)
和$(dollar)
个锚点匹配字符串的开头和结尾。
所以,这是你的正则表达式: -
^point\([-]?\d+(?:\.\d{1,5})?,[-]?\d+(?:\.\d{1,5})?\)$
答案 1 :(得分:2)
试试这个:
^point\(\-?\d+\.\d{1,5},\-?\d+\.\d{1,5}\)$
^point\(
\-?\d+\.\d{1,5}
,
\-?\d+\.\d{1,5}
\)$
纬度和经度逻辑可以进一步分解。
\-?
=匹配否定符号(如果存在则必须与\
一起转义,因为-
在RegEx中具有特殊含义)\d+
=匹配一个或多个十进制字符(例如0
到9
)\.
=匹配句点(.
单独有特殊含义,必须逃避它)\d{1,5}
=匹配一到五个十进制字符答案 2 :(得分:1)
这样的事情:
point\((?<lat>-?\d+\.\d{1,5}),(?<long>-?\d+\.\d{1,5})\)
尝试使用正则表达式工具,例如expresso:http://www.ultrapico.com/Expresso.htm
答案 3 :(得分:0)
怎么样:
^point\((\-?\d+(\.\d+)?),\s*(\-?\d+(\.\d+)?)\)$