我想要解析这些字符串:
?forum=Jiné akce a jiné#comments
?trening=140#$|Pralinka
?novinka=87#comments
?forum=Mimo mísu#comments
?forum=Členské forum#comments
?trening=139#comments
我想输出像
这样的数组 1. forum
2. Jiné akce a jiné
3. comments
或
1. trening
2. 140
3. Pralinka
所以我写了以下正则表达式:
\?([a-z]{4,})\=(.+)\#(\$\|)?([a-z]+)
但它在第二种情况下不起作用(可选的字符串部分)。
答案 0 :(得分:3)
请注意,默认情况下,正则表达式区分大小写......因此[a-z]
无法与Pralinka
匹配。您可以使用i
(不区分大小写)标记或使用:
\?([a-z]{4,})=(.+)#(?:\$\|)?([A-Za-z]+)
请注意,无需转义=
或#
(我们没有处于自由间距模式),我添加了非捕获组(?:...)
所以Pralinka
将与comment
位于同一个捕获组中。
演示版为here
答案 1 :(得分:2)
[a-z]+
与Pralinka
不匹配,因为P
是一个大写字母。
答案 2 :(得分:0)
您需要添加全局标记:/g
。