如何修复正则表达式间距

时间:2015-11-04 22:18:41

标签: regex pcre

我的正则表达式:(?: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

2 个答案:

答案 0 :(得分:1)

我也是,尝试再玩一次,我最终得到:(?:(?:[a-z]|I LD)| (?!Red|Green|Blue|Yellow|WI LD))它似乎工作正常。

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

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

答案 1 :(得分:0)

如果使用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