我需要從一個怪物,通過文本字符串來表示捕獲以下三件事情到變量,上一場比賽,我在一個正則表達式玩:我需要一個正則表達式進行條件匹配
- 怪物名稱(總是存在的。可能是一個或多個單詞,並可以包括括號)
- 健康(可選,總是包含在方括號[]如果有)
- 侵略(可選。總是顯示爲「攻擊你!」(如果存在) )
示例,後面跟着名稱/健康/侵略性匹配我希望下面各有:
示例1:[暴徒]水晶喬[受傷]攻擊你!
- 名稱:晶喬
- 健康:受傷
- 攻擊:攻擊你!
例2:[mob] Crystal Joe。
- 名:水晶喬
- 健康狀況:(空白)
- 侵略性:(空白)
實施例3:[暴民]水晶喬[劃傷。
- 名稱:晶喬
- 健康:劃傷
- 侵略性:(空白)
例4:[怪物]喬攻擊你!
- 名稱:喬
- 健康:(空白)
- 攻擊:攻擊你!
例5:[暴徒]巨大的紅龍攻擊你!
- 名稱:一個巨大的紅龍
- 健康:(空白)
- 攻擊:攻擊你!
例子6:[mob]巨大的紅龍(閃閃發光)[垂死]攻擊你!
- 名稱:一個巨大的紅龍(閃耀)
- 健康:死亡
- 攻擊:攻擊你!
我不是一個正規表達專家,老實說不熟練。我創建了下面的表達式:
\[mob\]\s([\w\s]*)(\[\w+\]\s?)?(attacking you)?
上面似乎當所有三個都存在的工作,但是當健康(即「[抓傷]」缺少名稱的名稱和比賽「攻擊你!」正如其名字(即「喬攻擊你!」這不是我想要的。需要注意的是,上述表達並不試圖做例6用括號。
感謝您的幫助,您可以提供。
創建多個正則表達式,並運行它們不只是1 ......這樣你就不必貧民窟砍多'|',然後不同的組名 – abc123