Pattern p = Pattern.compile("\\[(.*?)\\]");
Matcher m = p.matcher("Where Are You [Employee Name]? your have a [Shift] shift.");
while(m.find()) {
System.out.println(m.group());
}
Scanner sc = new Scanner("Where Are You [Employee Name]? your have a [Shift] shift..");
for (String s; (s = sc.findWithinHorizon("(?<=\\[).*?(?=\\])", 0)) != null;) {
System.out.println(s);
}
Pattern p = Pattern.compile("(\\[[\\w ]*\\])");
Matcher m = p.matcher("Where Are You [Employee Name]? your have a [Shift] shift..");
if (m.find()) {
String found = m.group();
}
5条答案
按热度按时间vuktfyat1#
尝试使用regex
\[(.*?)\]
匹配单词。\[
:转义了[
,因为它是一个Meta字符。(.*?)
:以非贪婪的方式匹配所有内容。样本代码:
uinbv5nw2#
下面是Java正则表达式,它提取两个括号 * 之间的文本,包括白色 *:
如果要忽略白色,请删除
"( )";
nx7onnlm3#
这是扫描仪基础解决方案
输出
t8e9dugd4#
使用StringBuilder(我假设您不需要同步)。
正如您所建议的,使用方括号分隔符的
indexOf()
将为您提供一个起始索引和一个结束索引。使用substring(startIndex + 1,endIndex - 1)来获取你想要的字符串。我不知道你说的字符串结尾是什么意思,但是
indexOf("[")
是开始,indexOf("]")
是结尾。pxq42qpu5#
这几乎就是正则表达式的用例。尝试
"(\\[[\\w ]*\\])"
作为您的表达式。这个表达式有什么作用?