我试图使用java匹配多行文本.当我使用Pattern带Pattern.MULTILINE修饰符的类时,我能够匹配,但我无法使用(?m).
使用(?m)和使用相同的模式String.matches似乎不起作用.
我确信我错过了什么,但不知道是什么.我不太擅长正则表达式.
这是我试过的
String test = "User Comments: This is \t a\ta \n test \n\n message \n";
String pattern1 = "User Comments: (\\W)*(\\S)*";
Pattern p = Pattern.compile(pattern1, Pattern.MULTILINE);
System.out.println(p.matcher(test).find()); //true
String pattern2 = "(?m)User Comments: (\\W)*(\\S)*";
System.out.println(test.matches(pattern2)); //false - why?
Run Code Online (Sandbox Code Playgroud) Eclipse regexp搜索工作得很好,所以例如在搜索框中我有这个:
(?s)(myMethod.*?;)\}\);
Run Code Online (Sandbox Code Playgroud)
现在我想在IDE和替换框中复制多行文本,例如我想要粘贴\1PASTE_MULTILINE_TEXT_HERE.但是,Eclipse不允许我直接复制粘贴多行文本而无需手动插入换行符.
在Vim(Gvim,Macvim)中,它可以很好地工作,保留所有空间; 我怎么能在Eclipse中做同样的事情?
我有一个文本文件,%%#%里面到处都是标记“ ”。我正在尝试编写一个快速而肮脏的 Groovy shell 脚本,用%%#%美元符号“ $”替换“ ”的所有实例。
到目前为止,我有:
#!/usr/bin/env groovy
File f = new File('path/to/my/file.txt')
f.withWriter{ it << f.text.replace("%%#%", "$") }
Run Code Online (Sandbox Code Playgroud)
但是当我运行这个脚本时,什么也没有发生(没有例外,也没有字符串替换)。我想知道我正在搜索的任何字符或美元符号本身是否被引擎盖下的正则表达式引擎解释为特殊字符。无论如何,我哪里出错了?