【问题标题】:Starcraft replay regex, bracket troubles星际争霸重播正则表达式,括号麻烦
【发布时间】:2011-05-20 03:18:44
【问题描述】:

[2v2] 种族=[TPvZP] 地图=[月岭] 玩家=[玩家 1(T)(w), 玩家 2(P)(L) vs player3(Z)(W), player4(P) (W)] 长度=[00-10-06]

在 TheLittleOne(职业玩家)的星际争霸网站上工作,我正在努力寻找以下情况的正则表达式。 [ 括号导致正则表达式过长。

我想要以下刺痛 例如) 游戏类型:2v2 比赛:TPvZP 地图:月岭 玩家1:姓名 玩家2:姓名 玩家3:姓名 玩家4:姓名 Player1-4:种族(P,T,Z,R) 玩家 1-4: 赢 (W,L) 游戏时长:10 分 6 秒。

我已经搜索过 S.O.几天了,我似乎找不到解决方案。

【问题讨论】:

  • 除了搜索,你还尝试过什么?
  • .*([^players]).*([^map]) 这是我得到的最接近的结果。
  • .+?vs(.+?) = 将团队分开,但在团队 2 上我得到 Length=[time],所以我不确定如何在长度之前结束。跨度>
  • 我建议你阅读一个好的正则表达式教程...

标签: regex rss yahoo yahoo-pipes


【解决方案1】:

给定字符串[2v2] race=[TPvZP] map=[Monlyth Ridge] players=[player 1(T)(w), player 2(P)(L) vs player3(Z)(W), player4(P)(W)] Length=[00-10-06]

~ ((\w*) \s*=\s*)? \[(.*?)\] ~ msx 将产生以下内容:

"" => 2v2
race => TPvZP
map => Monlyth Ridge
players => player 1(T)(w), player 2(P)(L) vs player3(Z)(W), player4(P)(W)
Length => 00-10-06

然后在players 上应用~ (.*?) \( (\w) \) \( (\w) \) \s* ,? \s* (vs)? ~ msx 应该会产生这样的结果:

[2] => Array
    (
        [0] => T
        [1] => P
        [2] => Z
        [3] => P
    )

[3] => Array
    (
        [0] => w
        [1] => L
        [2] => W
        [3] => W
    )

这似乎足以制作您想要的输出字符串。

【讨论】:

  • 感谢您为我解决这个问题。我买了一本朋友推荐的 REGEX 书。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多