2013-01-08 76 views
1

我需要幫助正則表達式。我有像"testBla","Bla"test"這樣的詞。
我想從"testBla"中刪除"test"。所以如果給定的字符串大於4個字符,它應該只刪除"test"。 這是我的:REGEX - 刪除指定的字符串

^test\w{4,} 

但它不起作用。

任何想法?

+3

你在用什麼語言? –

+0

@MarkByers看到他的答案和問題 - 可能[標籤:JavaScript] –

+1

你是什麼意思的「不」工作(即有助於詳細瞭解你的問題是什麼) – broofa

回答

2

如果你想如果它發生在該行的開頭,後面跟着一個文字字符,那麼你可以使用一個非單詞邊界刪除test

^test\B 

看到它的在線工作:rubular

如果你想刪除test如果發生在該行的開始,隨後是任何字符(除了新行),那麼你可以使用一個前瞻:

^test(?=.) 

看到它在線工作:rubular

+0

主要問題是哪種風味OP是使用。由於非字邊界字符在某些正則表達式中捕獲了[^ a-zA-Z0-9_](又名'[^ \ w]'),因此您的第一個示例有時可能不會以Javascript正則表達式成功,例如(考慮「testç」)。 – inhan

+0

謝謝!我選擇了第一個。我假設字符串只包含字母(a-z)。 – Sylnois

1

這一個將只捕獲'測試'部分的一個字:\btest(?=\w{4,})。我假設你正在使用長度爲零的正則表達式引擎。

0

假設你正在使用JavaScript,試試這個:

string.replace(/test([^]+)/i, "$1"); 

     'Bla'.replace(/test([^]+)/i, "$1"); // 'Bla' 
     'test'.replace(/test([^]+)/i, "$1"); // 'test' 
    'testBla'.replace(/test([^]+)/i, "$1"); // 'Bla' 
    'blaTest'.replace(/test([^]+)/i, "$1"); // 'blaTest' 
'blaTestbla'.replace(/test([^]+)/i, "$1"); // 'blaTestbla' 

這將從字符串中刪除test,只有當字符串test開始,只要有更多的字符串中不僅僅是test。我添加了i以使正則表達式不區分大小寫。

+0

'/ test(。)/'也可以,不是嗎?另外,您可能希望領先的'^'反映OP的問題。 – broofa

+0

@broofa:'/ test(。+)/'應該可以工作,但會在換行符處破壞。在我的正則表達式中不需要'^'。 (看我的例子) – Cerbrus

相關問題