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

Gar*_*eth 2 java regex

我用这个把头发拉了一下.

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

我想现在提取这种7f8hd::;;8843fdj fls "":基于的前提下字符串,字符串以无论是终止}],),但所有这些字符可能是目前我只需要第一个.

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

我能想到的最好的是下面,但我的reg exp似乎并没有像我认为的那样工作.

String line = "7f8hd::;;8843fdj fls "": ] fjisla;vofje]]} fd)fds,f,f";
Matcher m = Pattern.compile("(.*?)\\}|(.*?)\\]|(.*?)\\)|(.*?),").matcher(line);
while (matcher.find()) {
    System.out.println(matcher.group());
}
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*ker 6

^[^\]}),]*
Run Code Online (Sandbox Code Playgroud)

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

在Java中:

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

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

说明:

^         # Match the start of the string
[^\]}),]* # Match zero or more characters except ], }, ) or ,
Run Code Online (Sandbox Code Playgroud)