包含新行时,模式不匹配

时间:2016-05-23 07:22:38

标签: java android regex

这是我的代码

 Pattern pbold = Pattern.compile(".*\\* *(.*?) *\\*.*");
 Matcher mbold = pbold.matcher(s);
 mbold.find();

3 个答案:

答案 0 :(得分:1)

你需要的是匹配空格字符的元字符:(?s) 这个空白元字符匹配:

  • 空格字符
  • 制表符
  • 回车符号
  • 换行符
  • 垂直制表符

有关此特殊字符的详细信息,请参阅The Java Tutorials - Regular Expressions - Predefined Character Classes

以下代码符合您的需要:

String s = "abc021\n" +
            "34-+\n" +
            "*\n" +
            "a\n" +
            "p\n" +
            "p\n" +
            "l\n" +
            "e\n" +
            "*\n" +
            "fga32\n" +
            "49";
    Pattern pbold = Pattern.compile(".*\\* *((?s).*?) *\\*.*");
    Matcher mbold = pbold.matcher(s);
    mbold.find();

这里也有类似的问题: Regular expression does not match newline obtained from Formatter object

答案 1 :(得分:0)

使用如下所示的标志igm:

Pattern pbold = Pattern.compile(".*\\* *(.*?) *\\*.*");
 Matcher mbold = pbold.matcher(s, Pattern.MULTILINE|Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
 mbold.find();

答案 2 :(得分:0)

这个正则表达式可能会解决您的问题...

SELECT COUNT(*) FROM mytable WHERE YEARWEEK(reg_date) = YEARWEEK(CURRENT_TIMESTAMP)

如果这还没有解决它......请详细说明你试图通过这个表达式。