我用这个把头发拉了一下.
说我有一个字符串 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.任何帮助都会很棒.
^[^\]}),]*
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)