java - java中的复杂正则表达式

标签 java regex

我找不到解析以下形式的字符串的方法

"(info1) something-uninteresting [info2, info22] s.u. [info3] s.u. (info4, info5, info6)"

正确。我想要一个像这样的输出

 Information Nr.0: info1
 Information Nr.1:  something-uninteresting 
 Information Nr.2: info2,
 Information Nr.3:  info22
 Information Nr.4:  s.u. 
 Information Nr.5: info3
 Information Nr.6:  s.u. 
 Information Nr.7: info4,
 Information Nr.8:  info5,
 Information Nr.9:  info6

但末尾没有逗号(例如,参见信息 nr.7 或 8)。

我目前的方法是

 Pattern p = Pattern.compile("[^\\[(\\])][^\\])\\[(,]*[^\\])\\[(]");

我们将不胜感激每一个帮助

最佳答案

您需要做的就是收集所有分隔字符并查找没有它们的序列。此代码生成您想要的匹配:

String text = "(info1) something-uninteresting [info2, info22] s.u. [info3] s.u. (info4, info5, info6)";
Pattern p = Pattern.compile("[^\\[\\](),]+");
Matcher m = p.matcher(text);
while (m.find()) {
    System.out.println(m.group());
}

关于java - java中的复杂正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20252937/

相关文章:

java - java hashcode()面试题

java - MongoDB - $set with findAndModify 或 update on embedded documents

java - 如何使用 Java 将原始数据发送到打印机

java - Youtube 完整的 Java 正则表达式

c++ - QRegularExpression - 向后查找与捕获长度的匹配

php - Javascript 和 PHP 中的正则表达式匹配问题

java - 如何解决 "unreported exception AWTException ; must be caught or declared to be thrown"。机器人实例

java - 以字符串格式获取日期哪个经济?每次都创建日期对象或通过日历对象使用日期实例

Javascript 正则表达式指定允许的内容(而不是不允许的内容)

Python - 错误的编码,正则表达式