正则表达式:提取两个特定单词

时间:2014-07-25 17:00:48

标签: regex

我有一个这样的字符串:

1:41 Kill: 1022 2 19: <world> killed Dono da Bola by MOD_FALLING

我需要在killed之前和第3次之后提取所有字符。在这种情况下: <world>以及bykilled之间的所有字符Dono da Bola

有什么建议吗?

提前谢谢。

2 个答案:

答案 0 :(得分:3)

这样做:

:[^:]+?:[^:]+?:\s*(.+?) killed (.+?) by .+

Demo

这与您示例中的<world>Dono da Bola相匹配。

说明:

  • :匹配:
  • [^:]+?匹配非冒号字符
  • :匹配:
  • [^:]+?匹配非冒号字符
  • :匹配:
  • \s*匹配空白
  • (.+?)匹配非贪婪方式的所有字符(<world>
  • killed匹配killed及周边空格
  • (.+?)匹配非贪婪方式的所有字符(Dono da Bola
  • by .+匹配空格,by,空格和字符串的其余部分。

答案 1 :(得分:2)

你的正则表达式是,

^[^:]*:[^:]*:[^:]*:(.*?)killed(.*?)by.*$

DEMO

Group1包含<world>(即space<world>space),而group2包含Dono da Bola(即space**Dono da Bola**space