正则表达式,用于在括号或逗号之前获取字符

时间:2013-05-09 14:22:19

标签: java regex

我把头发拉了一下。

说我有一个字符串7f8hd::;;8843fdj fls "": ] fjisla;vofje]]} fd)fds,f,f

我想现在从字符串中提取此7f8hd::;;8843fdj fls "":,前提是字符串以}],或{{1}结尾。但是所有这些角色都可以存在我只需要第一个角色。

我尝试使用Matcher和Pattern类创建正则表达式但没有成功,但我似乎无法正确使用它。

我能想到的最好的是下面但是我的reg exp似乎没有像我想的那样工作。

)

我显然不能正确理解reg exp。任何帮助都会很棒。

4 个答案:

答案 0 :(得分:6)

^[^\]}),]*

从字符串的开头匹配,直到(但不包括)第一个]}),

在Java中:

Pattern regex = Pattern.compile("^[^\\]}),]*");
Matcher regexMatcher = regex.matcher(line);
if (regexMatcher.find()) {
    System.out.println(regexMatcher.group());
}

(你实际上可以删除反斜杠([^]}),]),但我喜欢将它们保留在那里以保持清晰和兼容性,因为并非所有的正则表达式引擎都能识别这个成语。)

<强>解释

^         # Match the start of the string
[^\]}),]* # Match zero or more characters except ], }, ) or ,

答案 1 :(得分:3)

您可以通过replaceAll剪切其余部分:

  String newStr = yourStr.replaceAll("[\\])},].*", "");

split()并获取第一个元素。

String newStr = yourStr.split("[\\])},]")[0];

答案 2 :(得分:2)

你可以使用它(作为java字符串):

"(.+?)[\\]},)].*"

这是一个fiddle

答案 3 :(得分:1)

你能试试正则表达式(.*?)[}\]),](.*?)我在rubular上测试了它并且反对你的例子。