java正则表达式匹配一个字符串

标签 java regex

这是一个字符串

* '''A happy man is too satisfied with the present to dwell too much on the future.'''
** "My Future Plans" an essay written at age 17 for school exam (18 September 1896) ''The Collected Papers of Albert Einstein'' Vol. 1 (1987) Doc.22

我需要获取仅以一个 * 开头直到该行结尾的文本

Pattern pattern = Pattern.compile("\\*(.+?)\\n");
    Matcher matcher = pattern.matcher(text);
    List<String> s = new ArrayList<String>();
    while (matcher.find()) {
        s.add(matcher.group(1));
    }

我试过上面的代码,但它甚至匹配 2 * 而且从 * 到新行的文本也没有正确出现,我在这里错过了什么?

最佳答案

你可以试试这个:

Pattern pattern = Pattern.compile("(?m)^\\*([^*].*)");

(?m) 在多行模式下设置模式,其中 ^ 表示“行的开头”

在末尾添加 \\n 是没有用的,因为点不能匹配换行符。 (这也是惰性量词无用的原因)

关于java正则表达式匹配一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20012851/

上一篇:Java绘图MVC

下一篇:Java boolean 返回类型

相关文章:

java - 我的 TextView 不支持这个 (') 字符

java - FontMetrics 生成 NullPointerException

Java表达式: Not allow single quote in middle or Allow single quote with double back slash

java - 为什么在定长的正则表达式后方这种负向查找不起作用?

Ruby gsub 删除电话号码中的非法字符

java - 列表<列表<? super String> 没有按预期工作

java - Docker - 无法在入口点内使用占位符

java - 为什么这个属性数据没有正确加载到顶点着色器?

javascript - .replace() 所有正则表达式不起作用的实例

Java正则表达式replaceAll()