首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java中的Regex解析字符串

用Java中的Regex解析字符串
EN

Stack Overflow用户
提问于 2013-11-06 22:11:18
回答 7查看 248关注 0票数 0

我有一个字符串,格式如下

[dgdds,dfse][fsefsf,sefs][fsfs,fsef]

我将如何使用Regex快速解析它以返回一个ArrayList,每个值都包含这样的一个“条目”?

代码语言:javascript
复制
ArrayList <String>:

0(String): [dgdds,dfse]

1(String): [fsefsf,sefs]

2(String): [fsfs,fsef]

真的坚持住了,任何帮助都是很好的。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-11-06 22:18:40

您可以使用简单的\[.*?\] regex,这意味着:匹配以[开头的字符串,后面是零或多个字符(但尽可能短,而不是太快,这就是为什么.*?中的? ),以]结尾。

这很有效,可以在艾德龙上进行测试。

代码语言:javascript
复制
List<String> result = new ArrayList<String>();
String input = "[dgdds,dfse][fsefsf,sefs][fsfs,fsef]";
Pattern pattern = Pattern.compile("\\[.*?\\]");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) 
{
    result.add(matcher.group());
}
System.out.println(result);

输出:

代码语言:javascript
复制
[[dgdds,dfse], [fsefsf,sefs], [fsfs,fsef]]
票数 1
EN

Stack Overflow用户

发布于 2013-11-06 22:15:43

怎么样

代码语言:javascript
复制
String myData = "[dgdds,dfse][fsefsf,sefs][fsfs,fsef]";
List<String> list = new ArrayList<>(Arrays.asList(myData
        .split("(?<=\\])")));

for (String s : list)
    System.out.println(s);

输出:

代码语言:javascript
复制
[dgdds,dfse]
[fsefsf,sefs]
[fsfs,fsef]

此正则表达式将使用向后看机制在]之后的每个位置拆分。

票数 3
EN

Stack Overflow用户

发布于 2013-11-06 22:18:16

您应该试试这个regex:

模式=Pattern.compile(“\w*,\w*\");

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19823886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档