簡體   English   中英

正則表達式精確匹配字符串?

[英]Regular Expression to Match String Exactly?

我將在這個問題的開頭提到,雖然我離正則表達式大師還很遠,但它們對我來說並不完全陌生。 構建正則表達式來搜索特定字符串中的模式通常對我來說不是問題,但我有一個(也許?)獨特的情況。

我有一組值,比如:

028938
DEF567987
390987.456
GHI345928.039

我想匹配一組特定的字符串,例如:

  • 由 6 位數字組成的字符串
  • 由 6 位數字組成的字符串,一個小數,后跟 3 位數字

在上面的例子中,第一個和第三個值應該匹配。

我正在使用正則表達式:

[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{6}\.\d{3}$

是正確的模式,您可以測試6 位數字6 位數字點 3 位數字

^\d{6}((\.\d{3}$)|$)

將匹配6 位數字或 6 位數字點 3 位數字

Rubular是你的朋友!

匹配這個正則表達式:

"^\d{6}((\.\d{3}$)|$)"

我想你想要這樣的東西:

"^\d{6}(\.\d{3})?$"

您需要轉義“點”,因為它是正則表達式中的“任何”字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM