2009-12-04 661 views
8

當我搜索一些東西時,我在這個網站上找到了一個回答的問題。答案2包含對他們的回答/([^.]*).(.*)/是什麼意思?

/([^.]*)\.(.*)/

。 問題位於Find & replace jquery。我是javascript新手,所以我想知道,這是什麼意思?謝謝。

+4

我想我曾經在漫畫中看過那種褻瀆。或者,如果您願意,可以使用用於搜索和替換的正則表達式。 – xpda 2009-12-04 04:39:42

+1

@ xpda +1讓我在週五早上笑起來 – MrFidge 2009-12-04 09:15:07

回答

3

這是一個正則表達式,粗略搜索一個不包含句點的字符串,後跟句點,然後是包含任何字符的字符串。

8

這是一個regular expression(它匹配非句號,後跟一個句點,後面跟着任何內容(認爲是「file.ext」))。你應該跑步,不要走路,去了解它們。解釋這個特定的正則表達式如何工作並不會幫助你,因爲你需要開始簡單。所以從regex tutorial開始,並拿起Mastering Regular Expressions

+1

+1說「學習正則表達式」。 – 2009-12-04 04:35:51

+1

-1沒有提及的組,這個表達的整點。 – UncleO 2009-12-04 04:46:35

+0

@uncleo:很好,但那不是他問題的要點。他甚至沒有意識到這是一個正則表達式,因此解釋這個特定正則表達式的錯綜複雜並不會對他有很大的幫助。 – jason 2009-12-04 12:41:34

4

除了一個點,其次是一個點,其次是任何東西。

您可以在regexpal

2

這是一個正則表達式測試regex'es。正則表達式是強大的工具,如果你正確使用它們。

這個特殊的正則表達式從一個看起來像「file.ext」的字符串中提取文件名和擴展名。

+0

或'.textfile'(第一部分是可選的) – Amarghosh 2009-12-04 09:01:46

+1

最後一部分也是可選的。 '.'也會匹配。而'...........'也會匹配第一個'.'。 – eyelidlessness 2009-12-04 09:05:25

+0

或'Makefile'(擴展名是可選的)(但是正則表達式不會匹配) – Thanatos 2009-12-04 09:06:03

2

這是一個正則表達式,它將字符串分成兩部分:第一部分之前的所有內容,然後是其餘部分。大多數正則表達式引擎(包括Javascript一個)允許您分別訪問字符串的這些部分(使用$ 1來指代第一部分,而使用$ 2來指代第二部分)。

27
/([^.]*)\.(.*)/ 

讓我們解構它吧。開始和結尾斜槓是分隔符,並標記正則表達式的開始和結束。

然後有一個加括號的組:([^.]*) parentheseis只是爲了將一個字符串組合在一起。方括號表示「字符組」,表示該組內的任何字符都被接受。然而,這個組被第一個字符^否定,這顛倒了它的意思。由於除了否定之外唯一的字符是一個句點,因此它匹配了不是句號的單個字符。方括號後爲*(星號),表示方括號可以匹配零次或多次。

然後我們進入\.。這是一個逃脫的時期。正則表達式中的句號具有特殊含義(除非在轉義或字符組中)。這與文本中的文字週期相匹配。

(.*)是一個新的paranthesized分組。這一次,這段時間可以匹配任何字符,星號表示可以根據需要重複多次。

總之,該表達式找到任何字符序列(不是一個句點),後面跟着一個句點,後面跟着任何字符。

編輯:刪除了關於縮短的部分,因爲它破壞了正則表達式的假定目的。

+3

不僅僅是增加可讀性,這種類型打敗了正則表達式的目的。 這可能會提取字符串的第一個句點之前和之後的部分。 – 2009-12-04 04:27:47

+0

我意識到這是舊的,但應該提到,這些組也可以匹配零字符。即。有效的匹配是'a.b','a。','.b'和'。',組是'a'和'b','a'和'',''和'b',並且''和''分別。 – MattJenko 2014-10-09 05:52:38

-2

的。字符匹配任何字符,除了換行符字符\ r或\ n。

的^否定(點在這種情況下)

中的*表示接下來它「零次或多次」

括號組和捕獲,

的\允許您匹配一個特殊字符(如點或星號)

所以這個([^.]*)意味着任何換行符重複零次或多次(它只是吃回車)。

(.*)一部分表示字符零次或多次的任何字符串(除換行符)

\.意味着一個真正的點

這樣整個事情會匹配零個或多個換行符後跟一個點後跟任意數量的字符。

的詳細信息和正則表達式的一個非常重要的參考退房:http://www.regular-expressions.info/reference.html

+0

[^。]與字面上的點字符''相匹配。 。 – UncleO 2009-12-04 04:44:22

+0

這是一個JavaScript特定的語法? ^之間有什麼區別。和\。 ? – 2009-12-04 06:18:00

+1

@Joe Basirico:'\ .'匹配一個文字點,像這個'[^。]'這樣的字符類中的'^ .'匹配任何不是**的字面點。 – 2009-12-04 08:07:46

1

這是一個正則表達式與一些先進的應用。

考慮一個更簡單的版本:/[^.]*\..*/這與上面沒有括號相同。這將匹配任何至少有一個點的字符串。當添加括號併發生匹配時,變量\1\2將包含括號中的匹配部分。第一個在第一個點之前會有任何東西。第二部分將在第一個點之後包含所有內容。

實例:

input: foo...bar 
\1: foo 
\2: ..bar 

input: .foobar 
\1: 
\2: foobar 
1

這個正則表達式生成可檢索的兩個匹配表達式。

這兩部分是第一個點(可能是空的)和第一個點(可能包含其他點)之後的字符串之前的字符串。

對輸入的唯一限制是它至少包含一個點。它會匹配「。」與其他一些答案相反,但迴歸的羣體將是空的。

0

這是一個正則表達式,它基本上是一種用於描述另一種字符模式的字符模式。我曾經使用過正則表達式在文本文件中查找電子郵件地址,如果您正確編寫正則表達式,它們可以用於在大量文本中找到幾乎任何文本模式。

6

原件:/([^.]*)\.(.*)/

拆分此爲:
[1] ([^.]*):它說匹配所有字符除了. [ period ]
[2] \.:匹配期間
[3] (.*):匹配任何字符

,使其成爲 [1]匹配哪些不是所有字符. [ period ] [2],直到你找到一個.[ period ]然後按[3]匹配所有的C haracters。