[英]Using regex pattern in Java
我創建了一個完美的正則表達式模式,但我無法在Java中使用它:
(\\"|[^" ])+|"(\\"|[^"])*"
應用於
robocopy "C:\test" "C:\test2" /R:0 /MIR /NP
給(應該)
[0] => robocopy
[1] => "C:\test"
[2] => "C:\test2"
[3] => /R:0
[4] => /MIR
[5] => /NP
根據http://myregextester.com/index.php在0組中
現在,我如何在Java中獲得這6個值? 我試過了
Pattern p = Pattern.compile(" (\\\"|[^\" ])+ | \"(\\\"|[^\"])*\" ");
Matcher m = p.matcher(command);
System.out.println(m.matches()); // returns false
但這種模式甚至根本不匹配任何東西?
更新原始的perl正則表達式是:
(\\"|[^" ])+|"(\\"|[^"])*"
由於regexp字符串在進入regexp處理器之前首先由編譯器處理,因此需要將表達式中的每個backslah加倍,並為每個doublequote添加額外的斜杠。
Pattern p = Pattern.compile("(\\\\\"|[^\" ])+|\"(\\\\\"|[^\"])*\"");
matches()
嘗試匹配整個字符串上的模式。 您應該為您的案例使用Matcher對象的find()
方法。
所以解決方案是:
System.out.println(m.find());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.