【问题标题】:How can I fix the regex spacing如何修复正则表达式间距
【发布时间】:2016-02-05 14:44:58
【问题描述】:

我的正则表达式:(?:LD |(?:[a-zILT]+ ?))

我的测试字符串:Green 4 Green 4 Green 7 WI LD Green 9 Green 9 Red 3 Red 3 Red 4 WI LD Draw Four Red 5 Red Reverse Yellow 0 Yellow Skip Green 8 WI LD Draw Four

https://regex101.com/r/aD0oS2/5

如果您在下面查看 regex101 中的 SUBSTITUTION,它会返回:

G4 G4 G7 WG9 G9 R3 R3 R4 WDFR5 RRY0 YSG8 WDF

如何解决这个问题?我希望它返回类似:

G4 G4 G7 W G9 G9 R3 R3 R4 WDF R5 RR Y0 YS G8 WDF

【问题讨论】:

  • 规格是什么?哪些空间要保留/应该添加到哪里?
  • 数字后面的空格/反转/跳过/画二/画四需要保留。应删除所有其他空格。所以:Green 4 应该变成 G4Green Reverse Yellow 6 应该变成 GR Y6
  • WI LD 中的额外空间是有意的吗?
  • @McGlothlin 是的,这是有意的。
  • 好的,看起来Version 4 应该适合你。

标签: regex pcre


【解决方案1】:

我也尝试过再次使用它,结果是:(?:(?:[a-z]|I LD)| (?!Red|Green|Blue|Yellow|WI LD)),它似乎工作正常。

https://regex101.com/r/aD0oS2/6

http://sandbox.onlinephpfunctions.com/code/e8096fbcda5cc5c3878531f069dc0d3af5289852

【讨论】:

  • 如果它正常工作,您可以编辑或删除它。
  • @stribizhev 它说我不能删除它,因为这篇文章已经有了答案。我不知道我应该在这篇文章中编辑什么我对 Stackoverflow 比较陌生。
  • 好的,我赞成你的帖子,如果可能的话,你可以接受你的解决方案。
  • @stribizhev,谢谢!它说我必须等待 2 天才能接受答案:P
【解决方案2】:

如果使用 PCRE,(?|...) 表示法允许多个捕获都共享相同的捕获号,如 here 所示。

(W)I LD(?: (D)raw (F)our)?|(D)raw (?|(T)wo|(F)our)|(?:(?|(R)ed|(G)reen|(Y)ellow|(B)lue) (?|(S)kip|(R)everse|(\d)))

替换为

\1\2\3\4\5\6\7

应该给你输出

G4 G4 G7 W G9 G9 R3 R3 R4 WDF R5 RR Y0 YS G8 WDF

您可以看到多个输入案例here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 2020-12-27
    • 1970-01-01
    • 2011-01-09
    相关资源
    最近更新 更多