2013-07-10 55 views
-5

我想了解正則表達式語言,但它很困難。正則表達式的含義

我已閱讀了一些教程,但我並不真正瞭解它。

我得到這個正則表達式,

N\b*:\b*[^:]* 

有人可以告訴我這是什麼正則表達式意味着什麼?

非常感謝!

+2

http://www.regexper.com – deceze

回答

2

打破正則表達式到其組成部分有:

  • N
  • \b*
  • :
  • \b*
  • [^:]*

N:只是文字。對這些沒什麼好說的。

\b是單詞邊界僞類。它將匹配字符串的開始,結尾或字邊界。單詞邊界是單詞的開始或結尾。這有點奇怪,因爲它匹配(「消耗」)沒有字符。在字符串「foo bar」中,有4個單詞邊界(在f之前,在o之後,在b之前,在r之後)。

A *表示先前的匹配可以重複任意次數(0,1,2或更多)。這意味着您正在接受任意數量的連續單詞邊界。

最後括號[]定義了一個類。這個班級裏面有^:^表示「反轉」。例如,如果您有一個類[a]它將匹配字符a。但[^a]將匹配除a之外的所有內容。所以類[^:]將匹配除:以外的所有內容。最後,我們還有一個*,這意味着您可以多次匹配此課程。

所以把一切聚集在這裏的正則表達式的意思:

  • 匹配信N
  • 匹配任意數量的字邊界的
  • 匹配的字符:
  • 匹配任何數量的單詞邊界
  • 匹配除:以外的任意數量的字符。

下面是幾個例子:

  • N: - 比賽,這是最簡單的比賽
  • N - 不匹配,沒有:
  • N:foobar - 匹配
  • N:foobar:baz - 不匹配,第二個:是不允許的。

這個整個單詞邊界的業務並不是非常直觀,沒有語境就沒有清楚這裏指的是什麼。圍繞:匹配單詞邊界沒有多大意義。但至少你應該能夠更好地理解正則表達式。

+0

謝謝你,我現在明白了 – stephanie

0

一些上下文可以是用於其通常功能的更具體的描述是有用的,但打破這個特定的正則表達式的下:

N - 字母「N」。
\b* - 零個或多個字的邊界(即它匹配一個字的末尾)。
: - 冒號。
\b* - 再次出現零個或更多的單詞邊界。
[^:]* - 一系列字符,直到達到行尾或 a:到達。

在字符串

LMN: Testing:123 

這將匹配

N: Testing 
+0

謝謝您的回答。這意味着,當我有N:D1:時,D1會匹配? – stephanie

+1

'N:d1'將在該示例中匹配。有許多網站可以用來測試正則表達式並查看比賽結果 - 我個人傾向於http://www.rubular.com/。 –

+0

謝謝你們:) – stephanie

1

我建議你使用debuggex.com

N\b*:\b*[^:]* 

Regular expression image

  • N:是文字
  • \b代表一個字開始/結束

Edit live on Debuggex

提示:越來越熟悉這些基礎知識一點點之後,我會說:

讓我們玩一個遊戲:

把你的左手手指上的黑色點,右手指在要匹配的字符串的第一個字符上,並嘗試用左手指觸及白點。

的規則是:

  • 你只能通過一個矩形傳遞,如果你目前的性質由它匹配
  • 一旦你通過你必須提前你的右手手指的矩形
  • 你不準向後(沒有手)去
    • 例外是環(行加入黑&白點下面的)一個字符
  • 如果達到白點,你有一個匹配
相關問題