如何获取此String
的正则表达式:
$OK:COMMAND=4,45,,internet,,,60.210.45.68,1050,30,168.95.1.1
我试过这个,但似乎它不起作用:
public static final String commandMotif = "^\\$OK:COMMAND=(\\w){0,1},(\\w){0,1},(\\w){0,1},(\\w){0,1},(\\w){0,1},(\\w){0,1},(\\w){0,1},(\\w){0,1},(\\w){0,1},(\\w){0,1}";
注意:我可以在两个逗号之间有一些数据,但有时也可能是空的。
答案 0 :(得分:2)
您不需要quantifier {0,1}
,您需要*
。 *
重复上一个元素0或更多次。
\w
包括字母和数字以及下划线。在您的示例字符串中有“60.210.45.68”,点与\w
不匹配。您可以通过创建自己的character class来添加此内容。
public static final String commandMotif = "^\\$OK:COMMAND=([\\w.]*),([\\w.]*),([\\w.]*),([\\w.]*),([\\w.]*),([\\w.]*),([\\w.]*),([\\w.]*),([\\w.]*),([\\w.]*)";
[\\w.]
是匹配word character或点的字符类。
我还在捕获组中移动了量词,因此可以在捕获的组中找到逗号之间的所有匹配部分。
如果你不需要捕捉逗号之间的部分,你可以缩短正则表达式:
^\$OK:COMMAND=[\w.]*(?:,[\w.]*){9}