-1

我需要帮助才能使用以下字符串中的正则表达式在 JAVA 中提取 2 个字符串:

"Batch job <jobid> <jobtype> success"

我需要取出jobid和job type。当我将字符串从 get() 方法放入 String 对象时,我得到<替换为&lt; 这是字面意思。

如何编写正则表达式以从我的字符串中提取 jobid 和 jobtype?字符串应该没有<>.

谢谢你的帮助!

4

2 回答 2

0

好吧,给我们一个样本并不能说明格式中可能存在什么差异。所以让我们假设它真的很严格:这两个字段总是被“批处理作业......成功”包围并用空格分隔。那么一个正则表达式可能如下所示:

Pattern pattern = Pattern.compile("Batch job (.*) (.*) success");
Matcher matcher = pattern.matcher(log);
if (matcher.matches()) {
    String jobId = matcher.group(1);
    String jobType = matcher.group(2);
    //...
}

如果格式有更大的灵活性,那么您需要设计更精确的正则表达式。

于 2012-06-19T16:55:04.997 回答
0

尝试使用/<(.*?)>/do ....

Pattern patt = Pattern.compile("/<(.*?)>/");
Matcher matc = patt.matcher("Batch job <jobid> <jobtype> success");
if (matc.matches()) {
    String jobid = matc.group(1);
    String jobtype = matc.group(2);
}

2个字符串jobidandjobtype将包含 and 之间的字符串<>不包括<and >

于 2012-06-19T16:56:58.510 回答