【发布时间】:2019-07-26 11:54:42
【问题描述】:
我要解析这个字符串
[[delay-4]]Welcome! [[delay-2]]Do you have some questions for us?[[delay-1]] Please fill input field!
我需要这样的东西:
[
[0] => '[[delay-4]]Welcome!',
[1] => '[[delay-2]]Do you have some questions for us?',
[2] => '[[delay-1]] Please fill input field!
];
字符串也可以是这样的(开头没有[[delay-4]]):
Welcome! [[delay-2]]Do you have some questions for us?[[delay-1]] Please fill input field!
预期的输出应该是这样的:
[
[0] => 'Welcome!',
[1] => '[[delay-2]]Do you have some questions for us?',
[2] => '[[delay-1]] Please fill input field!
];
我尝试了这个正则表达式 (https://regex101.com/r/Eqztl1/1/)
(?:\[\[delay-\d+]])?([\w \\,?!.@#$%^&*()|`\]~\-='\"{}]+)
但是,如果有人在文本中只写了一个 [,那么我的正则表达式就有问题,正则表达式会失败,如果我包含 [ 以匹配我得到错误的结果。
谁能帮我解决这个问题?
【问题讨论】:
-
你到底想匹配什么?你当前的模式会给你输出3v4l.org/MvSiH 你想匹配所有连续的方括号,即使它们不平衡?也许像这样regex101.com/r/g5PlFl/1
-
你的正则表达式对两个字符串都很好:- 3v4l.org/PWDK9 和 3v4l.org/MvSiH 那么你现在面临什么问题?