Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么正则表达式与这个字符串匹配?_Java_Regex_String - Fatal编程技术网

Java 什么正则表达式与这个字符串匹配?

Java 什么正则表达式与这个字符串匹配?,java,regex,string,Java,Regex,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},

如何获取此
字符串的正则表达式

$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,1}
,你需要
*
<代码>*正在重复上一个元素0次或更多次

\w
包括字母、数字和下划线。在示例字符串中有“60.210.45.68”,点与
\w
不匹配。您可以通过创建自己的来添加此项

[\\w.]
是与a或点匹配的字符类

我还将量词移动到了捕获组中,因此可以在捕获组中找到逗号之间的所有匹配部分

如果不需要捕获逗号之间的部分,可以将正则表达式缩短很多:

^\$OK:COMMAND=[\w.]*(?:,[\w.]*){9}

请参见

{0,1}
表示
(\\w)
重复0到1次
45(以及此字符串的其他部分)有2个
\\w
。您确实需要指定要匹配的文本中可能存在的变化。是否总是有相同数量的逗号?有文本、IP地址、数字的字段是否总是相同的?您在哪里匹配了句点?#Dan Hulme:Fix String:$OK:COMMAND=我有一个固定数量的逗号作为示例,在两个逗号之间,我可以有一个字符串、一个数字或IP@或什么都没有
{0,1}
并不等同于
*
实际上它与
相同?
@anubhava,我没有尝试用适当的快捷方式替换
{0,1}
。35; stema:如何将IP@的字符类添加到此模式中???@Abdelbarinouar,我在回答中添加了一个解释
^\$OK:COMMAND=[\w.]*(?:,[\w.]*){9}