這是我的Java 1.5的代碼(完整的示例):我在做什麼java.util.Scanner錯誤?
import org.junit.Test;
import static org.junit.Assert.*;
import java.util.Scanner;
import java.util.regex.Pattern;
public class StrangeTest {
@Test
public void testRegExp() {
Pattern re = Pattern.compile("(;|:)[^:;]*");
Scanner scanner = new Scanner(":alpha");
scanner.useDelimiter("");
assertEquals(":alpha", scanner.next(re)); // failure
}
}
這裏有什麼問題?
@chiccodoro,解釋看起來是正確的,但它不會改變代碼的行爲:(我仍然得到相同的結果,即使與'「(; |:)[^ ;:] *「' – yegor256 2010-09-23 10:07:05
@Vincenzo:可能是Java特有的,默認情況下它不會貪婪?然後我建議將問題的標題改爲」正則表達式不符合預期「。這更容易理解,因爲java.util.Scanner並不像正則表達式那樣出名。此外,在你的問題中包含這些新發現。 – chiccodoro 2010-09-23 10:26:02
@Vincenzo:如果你說'「(; |:)[^ ;:] + 「'(注意最後加號)? – chiccodoro 2010-09-23 10:27:07