为我对正则表达式世界的理解不足而道歉。我正在尝试使用正则表达式拆分文本。这就是我现在正在做的事情。请考虑以下字符串
String input = "Name:\"John Adam\" languge:\"english\" Date:\" August 2011\"";
Pattern pattern = Pattern.compile(".*?\\:\\\".*?\\\"\\s*");
Matcher matcher = pattern.matcher(input);
List keyValues = new LinkedList();
while(matcher.find()){
System.out.println(matcher.group());
keyValues.add(matcher.group());
}
System.out.println(keyValues);
我得到了正确的输出,这正是我想要的。
Name:"John Adam"
languge:"english"
Date:" August 2011"
现在,我正在努力让它变得有点通用。例如如果我在输入字符串中添加另一个模式。我以不同的模式添加了一个新值 Audience:(user) ,即 "替换为 ();
String input = "Name:\"John Adam\" languge:\"english\" Date:\" August 2011\" Audience:(user)";
这个的通用模式是什么?对不起,如果这听起来太蹩脚了。
谢谢
最佳答案
第 1 步:删除大部分斜杠 - 您不需要转义引号或冒号(它们只是另一个普通字符)
试试这个模式:
".*?:[^\\w ].*?[^\\w ]\\s*"
它适用于作为分隔符的所有非单词/空格字符,适用于您的测试用例,并且适用于 name:'foo'
等
关于java - 在 java 中使用正则表达式拆分文本的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10856028/