正则里面s包括回车吗?
程序员文章站
2022-05-16 14:06:26
...
文档上说\s表示空白字符 回车算不算空白字符呢
用实际例子测试了一下,不同的环境结果各不相同
用实际例子测试了一下,不同的环境结果各不相同
测试文件内容
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都能匹配出来
回复内容:
文档上说\s表示空白字符 回车算不算空白字符呢
用实际例子测试了一下,不同的环境结果各不相同
测试文件内容
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 模式中的圆点元字符(.)匹配所有的字符,包括换行符
如果设置了s这个修饰符,模式中的"点号"元字符匹配所有字符,包含换行符。如果没有这个 修饰符,点号不匹配换行符。这个修饰符等同于 perl 中的/s修饰符。 一个取反字符类比如 1 总是匹配换行符,而不依赖于s这个修饰符的设置。
- a ↩