java - 在 java 中使用正则表达式拆分文本的问题

标签 java regex

为我对正则表达式世界的理解不足而道歉。我正在尝试使用正则表达式拆分文本。这就是我现在正在做的事情。请考虑以下字符串


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/

相关文章:

c++ - 如何忽略正则表达式中的换行符 (C++)

javascript - html 标签条目的正则表达式

regex - 如何使用 XSLT 中的 RegEx 检查 xml textnode 是否包含中文字符

java - 使用字符串时对输出感到困惑

Java/Android : Passing Intent Extras, 然后在另一个方法上使用它

java - Android、Foursquare 和 —特点

regex - R 相当于 MATLAB 正则表达式中的 'tokens' 选项

c++ - std::regex 转义 "+"符号

java - Spring Boot 404 未找到错误

java - 将相同的 servlet 配置到不同的映射并为每个映射设置不同的安全性