我想了解正則表達式語言,但它很困難。正則表達式的含義
我已閱讀了一些教程,但我並不真正瞭解它。
我得到這個正則表達式,
N\b*:\b*[^:]*
有人可以告訴我這是什麼正則表達式意味着什麼?
非常感謝!
我想了解正則表達式語言,但它很困難。正則表達式的含義
我已閱讀了一些教程,但我並不真正瞭解它。
我得到這個正則表達式,
N\b*:\b*[^:]*
有人可以告訴我這是什麼正則表達式意味着什麼?
非常感謝!
打破正則表達式到其組成部分有:
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
- 不匹配,第二個:
是不允許的。這個整個單詞邊界的業務並不是非常直觀,沒有語境就沒有清楚這裏指的是什麼。圍繞:
匹配單詞邊界沒有多大意義。但至少你應該能夠更好地理解正則表達式。
謝謝你,我現在明白了 – stephanie
一些上下文可以是用於其通常功能的更具體的描述是有用的,但打破這個特定的正則表達式的下:
N
- 字母「N」。
\b*
- 零個或多個字的邊界(即它匹配一個字的末尾)。
:
- 冒號。
\b*
- 再次出現零個或更多的單詞邊界。
[^:]*
- 一系列字符,直到達到行尾或 a:到達。
在字符串
LMN: Testing:123
這將匹配
N: Testing
我建議你使用debuggex.com
N\b*:\b*[^:]*
凡
N
,:
是文字\b
代表一個字開始/結束提示:越來越熟悉這些基礎知識一點點之後,我會說:
讓我們玩一個遊戲:
把你的左手手指上的黑色點,右手指在要匹配的字符串的第一個字符上,並嘗試用左手指觸及白點。
的規則是:
http://www.regexper.com – deceze