java - java中的正则表达式

标签 java regex

我有以下代码来对字符串执行一些正则表达式

public class RegexForPresto {

public static void main(String[] args) {

    Pattern p = Pattern.compile("^M^M rawtostampedMsg^L 48^UT ");

    String candidateString = "^M^M rawtostampedMsg^L 48^UT 1338802566.906^EOH^name;

    Matcher matcher = p.matcher(candidateString);
    String tmp = matcher.replaceAll("");

    System.out.println(tmp);
    }

    }

而不是仅仅获取

^EOH^name

执行时得到以下输出

^M^M rawtostampedMsg^L 48^UT 1338802566.906^EOH^name

还可以从字符串中删除“^EOH^”,以便仅获得“name”作为输出。我不知道如何删除特殊字符(“^”)。如有任何帮助,我们将不胜感激。

提前致谢。

最佳答案

你可以使用这个模式

.*EOH.(.*) 

然后从第一个捕获组获取结果,如下所示:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.junit.Test;

import junit.framework.Assert;

public class PatternTest {
    @Test public void testPatter() {
        Pattern p = Pattern.compile(".*EOH.(.*)");
        String candidateString = "^M^M rawtostampedMsg^L 48^UT 1338802566.906^EOH^name";
        Matcher matcher = p.matcher(candidateString);
        if(matcher.matches()){
            String tmp = matcher.group(1);
            Assert.assertEquals("name", tmp);
        }
    }
}

关于java - java中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10880319/

相关文章:

java - 如何在java中将图像路径保存到sql数据库

regex - 带有通配符和问号的 Apache Rewrite 问题

javascript - 用正则表达式替换文本中的多个字符串

javascript - 正则表达式从字符串中捕获域名,包括特定顶级域名的电子邮件地址

ruby - 正则表达式查找直到字符?

java - 正则表达式仅匹配第一次出现的情况

java - 将 aSyncTask 与变量一起使用

java - 如何测试内部调用 AWS 服务的代码

java - 将元素添加到字符串数组 String[] 并在 Junit 中测试结果

java - 使用 ANTLR 4 将文件解析为数组?