如何使用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,如果您有自己的问题,我建议您创建一个新问题。