2010-02-11 28 views
0

這些字詞1和字詞2是在括號需要使用的preg_replace正則表達式幫助

要刪除的整條生產線取決於單詞2

[word1] something-line-text [word2] some text again 

要替換一些文本與其他依賴於WORD2

[word1] something-line-text [word2] some text again 

into 

REPLCACEDTEXT something-line-text some text again 

some line text (something/something) 

into 

(something/something) some line text 
+0

所以你想刪除word1和word2?你是否想將任何東西移動到行首? – 2010-02-11 23:06:07

+0

實際上是行的中間,我想要這些替換 – MIkeyy 2010-02-11 23:09:43

+0

那麼,你想要word1和word2總是被刪除?或者只有兩者都在線上?你能舉出每個案例的具體例子嗎? – 2010-02-11 23:13:43

回答

0

我不是100%肯定,你想要什麼,但是這會尋找[字詞1]和[單詞2]和刪除它們只有兩個就行了:

$line = preg_replace('/word1(.*)word2/', '$1', $line); 

這種方法可以匹配部分詞語,你可能會留下額外的空白。稍微好一點的是:

$line = preg_replace('/\s?word1\b(.*)\s?word2\b/', '$1', $line); 

這可以確保它們是作爲使用單詞邊界和空間全字匹配。我在一邊使用空格,以便消耗額外的空間。如果你不在意,只需在每個單詞的兩側使用\b

第二種情況下,移動第一個括號短語行的開頭:

$line = preg_replace('/(.*)(\(.*?\))/', '$2 $1', $line); 

編輯:

看到你的榜樣,我想你想:

$line = preg_replace('/^\[Scene\].*/', '', $line); 

$line = preg_replace('/\[\.*?\]\s+(.*)(\[.*?\])/', '$2 $1'); 

$line = preg_replace('/(.*)\s+(\(.*?\))/', '$2 $1'); 
+0

感謝第一個正常工作,但輸出就像 - [] sometext [] - 我想刪除最後一個支架,或兩個,就像 - [] somtextonly --- – MIkeyy 2010-02-11 23:42:07

+0

然後在表達式中包括括號。 '$ line = preg_replace('/ \ s?\ [word1 \](。*)\ s?\ [word2 \] /','$ 1',$ line);' – 2010-02-11 23:44:06

+0

hmm它不工作, - [嘿你] sometext [你] ---- – MIkeyy 2010-02-11 23:49:02