2015-11-30 51 views
-1

我在匹配Python上的正則表達式的開始和結束時遇到了問題。 基本上我感到困惑的時候用字邊界/b和開始/結束錨^ $正則表達式開始和結束匹配

我的

^[A-Z]{2}\d{2} 

比賽4字母字符(2個大寫字母,兩個數字),這正則表達式是我「M後

匹配AJ99,RD22,CP44等

但是,我也注意到,AJAJAJAJAJAJAJAJAJSJHS99能以及相匹配。我試過用^和$來匹配整個字符串。這不起作用

^[A-Z]{2}\d{2}$ # this doesn't work 

^[A-Z]{2}\d{2} # this is fine 
[A-Z]{2}\d{2}$ # this is fine 

4個字符長,我對匹配是字符串,但在前兩個例子中的正則表達式可以挑選一個較長的字符串的開始和結束分別。

s = "NZ43" # 4 characters, match perfect! However.... 
s = "AM27272727" # matches the first example 
s = "HAHSHSHSHDS57" # matches the second example 
+7

你能提供一個失敗的字符串的例子嗎?事實上,一些失敗和一些成功將會有所幫助。 –

+1

你想要匹配什麼?張貼一些樣本輸入和他們各自的比賽將有很大幫助。 –

+2

是的,看起來是正確的。有什麼問題? –

回答

3

位置錨^$地方限制你的匹配字符的位置:分析你的完整的正則表達式

^[A-Z]{2}\d{2}$ 
  • ^比賽只的開始文字
  • [A-Z]{2}正好2大寫ASCII字母字符
  • \d{2}正好2位(相當於[0-9]{2})僅
  • $匹配的文本

結束如果去掉2位主播中的一個或兩個(^$)你可以匹配從上面開始或結尾開始的子字符串。

如果要精確匹配一個字不使用開始/結束的字符串使用\b錨,像這樣:

``\b[A-Z]{2}\d{2}\b`` 
  • \b比賽在文本的開始/結束之間的正則表達式(在正則表達式的單詞炭\w旨在作爲[a-zA-Z0-9_]一個)和一個字符字組(可作爲\W)中未

以上正則表達式匹配的所有字符串旁邊WS24

  • WS24單獨
  • before WS24
  • WS24 after
  • before WS24 after
  • NZ43

不匹配

  • AM27272727(如果是AM27 272727AM27"272727
  • HAHSHSHSHDS57(如果HAHSHSHSH DS75或...你得到它,它會做的都行)

A demo online(該網站將有助於你也嘗試正則表達式)。

0

您顯示的行爲就像應該是這樣的事實,您的問題表明您可能沒有完全理解正則表達式是如何工作的。

作爲除了GsusRecovery,here的網站的非常好,翔實的答案,指導您完成正則表達式的概念,並試圖教你用基於經驗的系統的基礎知識。要清楚的是,我不想吹捧這個網站,因爲有很多這樣的網站,但是我真的可以使用這個網站,所以這就是我所建議的網站。

相關問題