Input-> Input!RC + Calc!R[1]C[1]
在輸出我想在這些操作:迭代通過正則表達式找到
RC and R[1]C[1]
我嘗試:
private static void findMatch(String formula) { Matcher m = Pattern.compile("\\W(R(\\[(.+?)\\])?C(\\[(.+?)\\]))") .matcher(formula); // Matcher m = Pattern.compile( // "\\W(R(\\[(.+?)\\])?C) | \\W(R(\\[(.+?)\\])?C(\\[(.+?)\\]))") // .matcher(formula); for (; m.find(); m.reset(formula)) { System.out.println(m.group(3)); } }
它看起來並不第二模式以及它進入無限循環。
這是怎麼回事?
我有這個只有一個擔憂:當我試圖取代一個特定羣體,比如R [1] C,它也取代了我不想要的R [1] C [1]部分,並給出了錯誤的輸出。你在想什麼,我該如何處理這種情況? – AnujKu 2013-02-14 02:58:25
您需要編寫正則表達式,使其只匹配要替換的字符串。如果你想替換R [1] C'而不是'R [1] C [1]',那麼你應該在'C'後改變'(\\ [(。+?)\\])?''到'(?!\\ [(。+?)\\])'。這是一個負向前視,意思是「如果字符串中的下一個字符匹配'\\ [(。+?)\\'''」,則匹配失敗。 – 2013-02-14 17:23:11