[英]Regular Expression to Match String Exactly?
我将在这个问题的开头提到,虽然我离正则表达式大师还很远,但它们对我来说并不完全陌生。 构建正则表达式来搜索特定字符串中的模式通常对我来说不是问题,但我有一个(也许?)独特的情况。
我有一组值,比如:
028938
DEF567987
390987.456
GHI345928.039
我想匹配一组特定的字符串,例如:
在上面的例子中,第一个和第三个值应该匹配。
我正在使用正则表达式:
[0-9]{6}
[0-9]{6}.[0-9]{3}
不幸的是,由于上述所有示例都包含指定的模式,因此所有值都匹配。 这不是我的本意。
所以我的问题,简而言之,是如何编写一个与字符串完全匹配的正则表达式,在匹配模式的右侧或左侧没有额外的字符? 这种类型的匹配有术语吗? (谷歌没有帮助。)TIA
使用^
和$
匹配字符串的开头和结尾
^[0-9]{6}$
^[0-9]{6}\.[0-9]{3}$
参考: http : //www.regular-expressions.info/anchors.html
此外,正如 Mikael Svenson 所指出的,如果您要在较大的文本块中搜索此模式,则可以使用单词边界\\b
。
参考: http : //www.regular-expressions.info/wordboundaries.html
你也可以一次写出这两个正则表达式
^\d{6}(\.\d{3})?$
您可以使用^
要求在行首匹配,使用$
要求匹配行尾
^[0-9]{6}\.[0-9]{3}$
[0-9] 也可以写成 \\d
^\d{6}\.\d{3}$
如果您想在一行中匹配您的模式,您也可以使用\\b
作为单词边界。 其中的空间
\btest\b
将匹配这一行中的单词test
this is a test for matching
匹配这个正则表达式:
"^\d{6}((\.\d{3}$)|$)"
我想你想要这样的东西:
"^\d{6}(\.\d{3})?$"
您需要转义“点”,因为它是正则表达式中的“任何”字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.