在我玩的MUD上,暴徒房間的描述可以在許多變化中開始。我試圖寫一個正則表達式,它只捕獲暴民的房間描述,而不是任何可能的開始標誌。這是我到目前爲止:完善一個正則表達式模式
^\((?:[ACDGHIXRSTUW()]+|\s?\(Angry\))\)?\s?(.*)$
它的工作,大部分,直到暴民沒有起始國旗。以下是我正在談論的有關變體的示例:
(H) (Angry) A mob is here.
(A)(W)(R) A mob is also here.
Another mob is here.
這只是暴民可能出現的三種不同方式。基本上,範圍部分中的每個字母都可以是一個標誌,由()包圍。在單個字母標誌之間沒有空格)和下一個(但是,在(憤怒)之前有一個空格,除非它是領先的)。
我的問題是它沒有捕獲最後一個怪物,它捕獲「(憤怒)」,我認爲我總體上對正則表達式有一個公平的把握,但我不明白我做錯了什麼,甚至可能不是最有效的處理方式。
編輯:如果不清楚,我只想捕獲最後的所有內容),或者如果沒有標記則從頭開始。
它會更好,如果你的命令是'^(?:* \))(?。 *)' – 2014-10-19 02:06:47
其實,我原本是用hwnd的答案去的,但是發現Avinash Raj的版本(做了一些小改動)才能更好地工作!再次感謝! – Josh 2014-10-19 02:22:31
@AvinashRaj好點。謝謝。 – 2014-10-19 12:26:24