[英]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.