2010-02-18 250 views
0

所以我是新來正則表達式....我什麼也沒有意識到這是...正則表達式的邏輯括號...?

我怎樣才能搜索一個特定的正則表達式每次在一個字符串,即匹配所有'測試'在給定的字符串....我可以使用什麼作爲合乎邏輯的禁忌?

/(test)*/ 

這會返回幾個匹配/反向引用,並且似乎不是用於邏輯分組/順序執行。

+0

我不明白你在問什麼。你能舉一個例子,這會有用嗎? – wallyk 2010-02-18 20:14:43

+0

它不是很清楚你想要什麼樣的結果。你能發佈一個樣本輸入字符串和所需的輸出嗎? – Juliet 2010-02-18 20:15:06

+0

您是否試圖抓住字符串中'test'的所有實例,以便您可以用其他方式替換它們?你能詳細說明你的目標嗎? – 2010-02-18 20:15:08

回答

4

要創建的匹配組停止括號,用?:

/(?:test)*/ 

這只是比賽的「測試」多次連續啓動它們,而不會有任何保存匹配的字符串。

+0

讓我問一下,在邏輯括號的作用下,是否經常需要(?:)? – Zombies 2010-02-18 20:40:04

+0

值得注意的是,這個構造特定於Perl(和大多數語言可以的PCRE相關係統)。在grep,awk和其他POSIX風格的正則表達式環境中不起作用。 – 2010-02-18 20:40:46

1

您的正則表達式僅指定連續出現的測試。對於所有人來說,你通常需要給我們一面旗幟來表明你想要匹配所有的事件,而不僅僅是第一次。在大多數語言中,這通過使用'g'標誌來指示。

/test/g 
+0

我對此很新,謝謝....另外,知道是戰鬥的一半。 – Zombies 2010-02-18 20:41:25