Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 - Fatal编程技术网

如何使用Java正则表达式拆分此字符串

如何使用Java正则表达式拆分此字符串,java,regex,Java,Regex,我想把绳子分开 String fields = "name[Employee Name], employeeno[Employee No], dob[Date of Birth], joindate[Date of Joining]"; 到 我为此编写了以下java代码,但它只打印其他匹配项未打印的名称 String fields = "name[Employee Name], employeeno[Employee No], dob[Date of Birth], joindate[Date

我想把绳子分开

String fields = "name[Employee Name], employeeno[Employee No], dob[Date of Birth], joindate[Date of Joining]";

我为此编写了以下java代码,但它只打印其他匹配项未打印的名称

String fields = "name[Employee Name], employeeno[Employee No], dob[Date of Birth], joindate[Date of Joining]";

Pattern pattern = Pattern.compile("\\[.+\\]+?,?\\s*" );

String[] split = pattern.split(fields);
for (String string : split) {
    System.out.println(string);
}
我做错了什么

谢谢你

这部分:

\\[.+\\]
匹配第一个[,如果字符串中没有换行符,.+然后吞掉整个字符串,然后\\]将匹配最后一个]

你需要通过放置一个?之后:

Pattern pattern = Pattern.compile("\\[.+?\\]+?,?\\s*");
不应该\\]+?只是\\]?

这部分:

\\[.+\\]
匹配第一个[,如果字符串中没有换行符,.+然后吞掉整个字符串,然后\\]将匹配最后一个]

你需要通过放置一个?之后:

Pattern pattern = Pattern.compile("\\[.+?\\]+?,?\\s*");

不应该\\]+?只是\\]?

错误在于您正在匹配。您可以将其更改为非贪婪匹配:

Pattern.compile("\\[.+?\\],?\\s*")
                      ^

错误是您正在匹配。您可以将其更改为非贪婪匹配:

Pattern.compile("\\[.+?\\],?\\s*")
                      ^

有一个在线正则表达式测试仪,当你试图理解正则表达式以及它们如何应用于给定的输入时,它将帮助你很多。

有一个在线正则表达式测试仪,当你试图理解正则表达式以及它们如何应用于给定的输入时,它将帮助你很多。

最好使用匹配的方括号\[\w+\s+\w+[^\]\]

您还可以看到一个很好的示例

使用它来匹配方括号是否更好\[\w+\s+\w+[^\]\]


你也可以看到一个很好的例子

我做了]+?不情愿的部分,但不知道必须使。+也不情愿。谢谢你,巴特说得对,收盘后根本不应该有量词,更不用说勉强的了;Cde先生,;Xyz小姐;所以我可以拆分标题、姓名和电子邮件id,thanks@Apache,如果您有自己的问题,我建议您创建一个新问题。我已经做了]+?不情愿的部分,但不知道必须使。+也不情愿。谢谢你,巴特说得对,收盘后根本不应该有量词,更不用说勉强的了;Cde先生,;Xyz小姐;所以我可以拆分标题、姓名和电子邮件id,thanks@Apache,如果您有自己的问题,我建议您创建一个新问题。