Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 图案/匹配器不使用换行符_Java_Regex - Fatal编程技术网

Java 图案/匹配器不使用换行符

Java 图案/匹配器不使用换行符,java,regex,Java,Regex,我用Java中的模式和匹配器编写了一个程序,在一组字符之间生成一个字符串。我的代码当前为: String trying = "75px;"; Pattern tryingPattern = Pattern.compile("(?<="+Pattern.quote(trying)+").*?(?=center)", Pattern.MULTILINE); Matcher tryingMatcher = tryingPattern.matcher(pageConten

我用Java中的模式和匹配器编写了一个程序,在一组字符之间生成一个字符串。我的代码当前为:

    String trying = "75px;"; 
    Pattern tryingPattern = Pattern.compile("(?<="+Pattern.quote(trying)+").*?(?=center)", Pattern.MULTILINE);
    Matcher tryingMatcher = tryingPattern.matcher(pageContentString); 

       while (tryingMatcher.find()) {
           docketFile.write(tryingMatcher.group().toString());
    }
String trying=“75px;”;

Pattern tryingPattern=Pattern.compile((?
Pattern.MULTILINE
影响
^
$
的行为(以匹配行首和行尾),您在模式中根本不使用它们

对于您的用例,使用
DOTALL
,因为您希望在一行中处理所有内容

这会有用的

String trying = "75px;"; 
Pattern tryingPattern = Pattern.compile("(?<="+Pattern.quote(trying)+").*?(?=center)", Pattern.DOTALL);
Matcher matcher = tryingPattern.matcher(str);
// check all instances
while (matcher.find()) {
  System.out.println(matcher.group());
}
String trying=“75px;”;

Pattern tryingPattern=Pattern.compile((?尝试添加Pattern.DOTALL)

捕获该文本的另一个选项是使用捕获组:

75px(.*)center

您可以添加点匹配换行符的标记。可能类似于Pattern.dotalUpdated with multiline,但仍然找不到匹配multiline与^$的行为有关。我认为这不是他需要的。正确,更新了答案!谢谢@RonRosenfeld:)@InstanceFobject很棒,非常好用。有一个问题,如果我把多行代码写到一个文件中,有没有办法把它全部写在一行上,而不是像在源代码中那样逐个写出来?
75px(.*)center