文檔上說\s表示空白字符 回車算不算空白字符呢
用實際例子測試了一下,不同的環(huán)境結(jié)果各不相同
測試文件內(nèi)容
test.txt
PH
P and JA
VA
$text=file_get_contents('test.txt');
#print $text;
preg_match("/PH\sP/s",$text,$match);
print_r($match);
preg_match("/JA\sVA/s",$text,$match);
print_r($match);
php匹配出來為空
Pattern php = Pattern.compile("PH\\sP",Pattern.DOTALL);
Pattern java = Pattern.compile("JA\\sVA",Pattern.DOTALL);
BufferedReader in = new BufferedReader(new FileReader("test.txt"));
StringBuffer sb=new StringBuffer ();
String s;
while ((s = in.readLine()) != null) {
sb.append(s);
}
Matcher m = php.matcher(sb);
while(m.find()) {
System.out.println(m.group());
}
m = java.matcher(sb);
while(m.find()) {
System.out.println(m.group());
}
java都能匹配出來
回車是/r/n,不是空白,要在/s模式下就包括了,preg_match('/lalla /s',$youString)
,s 模式中的圓點元字符(.)匹配所有的字符,包括換行符
如果設(shè)置了s這個修飾符,模式中的"點號"元字符匹配所有字符,包含換行符。如果沒有這個 修飾符,點號不匹配換行符。這個修飾符等同于 perl 中的/s修飾符。 一個取反字符類比如 1 總是匹配換行符,而不依賴于s這個修飾符的設(shè)置。