2015-07-01 39 views
6

剛剛遇到了我的正則表達式的一個問題。我想匹配方括號標記內的所有內容。正則表達式匹配所有字符和新行?

這裏是我的正則表達式:/(?:\[.*])(.*)(?:\[\/.*])/

我運行它針對此內容:

[TITLE]More Things[/TITLE] 
[BODY]This is not working 
still not working 
nope, hasn't magically started working 

I'd like to match double carriage returns[/BODY] 

它只會在瞬間匹配單行標籤。任何幫助表示讚賞,謝謝。

+0

你有嵌套的標籤?你是否也想嵌套標記文本? –

+0

不,我永遠不會在這個系統中使用嵌套標籤。 – ToXic73

回答

2

如果你在使用php,你只需要添加s修飾符。並且最好捕獲開始標籤並在寫入結束標籤的模式時參考它。

/(?:\[([^\]]*)\])(.*?)(?:\[\/\1\])/s 

如果你是JavaScript的,那麼你必須需要打開每個.在上述正則表達式[\S\s]

DEMO

+0

我使用的是PHP,但是當我使用s修飾符時,它抵消了我認爲的結果?它會返回不同的結果嗎? – ToXic73

+0

我在做'preg_match_all()',它似乎只返回一個結果。 – ToXic73

+0

檢查我的更新。 –