以下代碼匹配兩個表達式並打印成功。Pattern.COMMENTS始終導致Matcher.find失敗
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String regex = "\\{user_id : [0-9]+\\}";
String string = "{user_id : 0}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);
if (matcher.find())
System.out.println("Success.");
else
System.out.println("Failure.");
}
}
但是,我想空白空間並不重要,所以下面也應該打印成功。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String regex = "\\{user_id:[0-9]+\\}";
String string = "{user_id : 0}";
Pattern pattern = Pattern.compile(regex, Pattern.COMMENTS);
Matcher matcher = pattern.matcher(string);
if (matcher.find())
System.out.println("Success.");
else
System.out.println("Failure.");
}
}
的Pattern.COMMENTS標誌是應該允許空白空間,但它會導致要打印故障。如果字符串完全相同(包括空格),甚至會導致打印失敗,如第一個示例中所示。例如,
import java.util.regex.Matcher; import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String regex = "\\{user_id : [0-9]+\\}";
String string = "{user_id : 0}";
Pattern pattern = Pattern.compile(regex, Pattern.COMMENTS);
Matcher matcher = pattern.matcher(string);
if (matcher.find())
System.out.println("Success.");
else
System.out.println("Failure.");
}
}
打印失敗。
爲什麼會發生這種情況,我該如何讓模式忽略空白?
我複製你的第二個主要方法的內容和它的工作對我來說,它打印「成功。」。 – stema 2012-02-03 06:59:17
對不起,我切換了哪個字符串,我想要空格。現在它是固定的。 – gsingh2011 2012-02-03 07:17:08