Java-按正则表达式拆分字符串

Java-按正则表达式拆分字符串,java,regex,string,Java,Regex,String,我有一根像下面这样的线 [timestamp][abcdef]这是一条消息。 在java中,我必须拆分上面的字符串并只获取这是消息。 我试图通过获取lastindexof]和子字符串来拆分它。但是,对于我的用例来说,这不是一种合适的方法,因为我的消息可能包含]而整个事情都会出错 所以,我想通过使用正则表达式来实现它 在正则表达式中,我想匹配[timestamp][ABC_DEF]。时间戳可以是任何东西,但它必须匹配[ABC_DEF]。只有这样我才能收到我的信息 对于相同或任何其他方法,如果您提出

我有一根像下面这样的线

[timestamp][abcdef]这是一条消息。

在java中,我必须拆分上面的字符串并只获取
这是消息。

我试图通过获取lastindexof
]
和子字符串来拆分它。但是,对于我的用例来说,这不是一种合适的方法,因为我的消息可能包含
]
而整个事情都会出错

所以,我想通过使用正则表达式来实现它

在正则表达式中,我想匹配
[timestamp][ABC_DEF]
。时间戳可以是任何东西,但它必须匹配[ABC_DEF]。只有这样我才能收到我的信息

对于相同或任何其他方法,如果您提出任何书面建议,我也可以


谢谢。

只需
字符串
方法:

String filter=“[ABC_DEF]”;
int filterIndex=line.indexOf(过滤器);
如果(过滤器索引>=0){
返回行.substring(filterIndex+filter.length()).trim();
}
在这里,您可以检查字符串
[ABC_DEF]
是否包含在
行中,如果是,则检查字符串中的哪个位置。然后通过将
[ABC_DEF]
的长度添加到找到它的索引中,跳过该事件。行的其余部分是消息,使用
substring
方法提取。最后,使用
trim()
截断不必要的空白


对于正则表达式:

String filter=“\\[ABC\U DEF\\]”;//注意反斜杠
Pattern Pattern=Pattern.compile(“^\\[[^]]*\\]\\s+”+过滤器+“\\s*(.*)”);
匹配器匹配器=模式匹配(线);
if(matcher.matches()){
返回matcher.group(1.trim();
}

首先,编译一个正则表达式,它应该与
匹配。(当检查多行时,
模式
定义只应执行一次。)由于
[
]
是在正则表达式中具有特殊含义的字符,因此在正则表达式中包含它们时,我们必须使用反斜杠将其转义。行的消息部分是在
之间捕获的,因此,如果表达式匹配,我们可以使用
方法轻松提取消息部分。在上面的例子中,我们使用
trim()

删除消息开头和结尾不必要的空格,匹配文本
[ABC_DEF]
似乎并不难,是吗?你想试试吗?是的,这就是你在问题中写的。试试看,如果你不能自己完成的话,我们会帮你的。回复:
lastIndexOf
:为什么不使用
indexOf
(两次)?@thomas Haha。。我不知道如何编写正则表达式。尝试学习它,它非常有用: