所以,我试图得到这些不同的场景:
- 内带数字的方括号,例如[1]或[1111]或[1.2]
- 数字1(上面)后面跟着冒号,例如[1]:或[1111]:
- 数字2(上面)后面跟着任意长度的数字,例如[111]:123
- 3(上面)后跟空格,然后是数字,例如[111]:27
测试字符串:
time sheets..."[8]: 27 The ending sm testing [21] [2222] [22], [222]:22:
我想用空字符串
替换所有匹配结果:
time sheets..." The ending sm testing , :
我当前的模式:
[(.*?)](?::?|:[0-9]+?)
可以使用
[(d+(?:.d+)?)]:?(?:s*(d+(?:.d+)?))?
参见regex演示。
细节:
[
- a[
char(d+(?:.d+)?)
-组1:整型或浮点数]
- a]
char:?
-一个可选的:
字符(?:s*(d+(?:.d+)?))?
-一个可选的序列s*
-零或多个空白(d+(?:.d+)?)
-组2:整型或浮点数
注意:如果最后一个数字只能出现在:
之后,你需要稍微修改一下上面的regex:
[(d+(?:.d+)?)](?::(?:s*(d+(?:.d+)?))?)?
其中:?(...)?
部分转换为(:(...)?)?
。
参见regex演示。