2017-02-11 40 views
0

我有以下的正則表達式:爲什麼。是越來越排除單詞邊界正則表達式

\b[_\.][0-9]{1,}[a-zA-Z]{0,}[_]{0,}\b 

我的輸入字符串是:

  1. _49791626567342fYbYzeRESzHsQUgwjimkIfW
  2. .49791626567342fYbYzeRESzHsQUgwjimkIfW

我會假設它匹配1.2.,但它只匹配第一個場景ARIO。你能幫我找到正則表達式中的錯誤嗎?

+0

將正則表達式字體更改爲正常形式。 –

+1

「。」之前沒有字邊界。爲什麼會有?在它之前或之後沒有任何文字。 – Biffen

+0

問題出在[_ \。]只..不知道爲什麼 – harsh

回答

3

單詞邊界是單詞字符(字母,數字,下劃線)與非單詞字符或字符串的開始或結尾之間的邊界。所以在點(非單詞字符)和字符串的開始之間沒有字邊界。

您可以在此情況下使用的錨,信號字符串的開始,就像

^[_\.][0-9]{1,}[a-zA-Z]{0,}[_]{0,}$ 

您還可以通過使用*+量詞和避免不必要的轉義序列縮短您正則表達式一點,因爲通過Toto

^[_.][0-9]+[a-zA-Z]*_*$ 

您還可以使用前瞻和回顧後(如果可用),以建立自己的自定義邊界建議。

+0

謝謝它的工作 – harsh

+2

這可以縮減爲:'^ [_。] [0-9] + [a-zA-Z] * _ *' – Toto

+0

@Toto是的,它可以(包括到我的答案),但它沒有功能上的差異,所以我沒有真正關注這一點。 (對你來說也是減少的,可能對其他人來說可讀性更差) –