我把头发拉了一下。
说我有一个字符串7f8hd::;;8843fdj fls "": ] fjisla;vofje]]} fd)fds,f,f
我想现在从字符串中提取此7f8hd::;;8843fdj fls "":
,前提是字符串以}
或]
或,
或{{1}结尾。但是所有这些角色都可以存在我只需要第一个角色。
我尝试使用Matcher和Pattern类创建正则表达式但没有成功,但我似乎无法正确使用它。
我能想到的最好的是下面但是我的reg exp似乎没有像我想的那样工作。
)
我显然不能正确理解reg exp。任何帮助都会很棒。
答案 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)
答案 3 :(得分:1)
你能试试正则表达式(.*?)[}\]),](.*?)
我在rubular上测试了它并且反对你的例子。