在Python 3.3中,我想匹配下面的模式,但一直匹配失败。
我使用了以下正则表达式。
摄氏零下253
我使用了以下正则表达式。
[^\x00-\x47\x58-\x7F]+
它难道不是排除了除数字外的所有ASCII字符吗?
摄氏零下253
[^\x00-\x47\x58-\x7F]+
它难道不是排除了除数字外的所有ASCII字符吗?
\p{N}
在Java中无法使用,你有什么等价的想法吗? - Hasen\x
表示十六进制转义,你应该使用所需ASCII字符的十六进制值。根据ASCII表(http://www.asciitable.com/),范围应为0
到2F
,然后是3A
到7F
,你的正则表达式应该像这样:[^\x00-\x2F\x3A-\x7F]+
不确定您使用的是哪种语言,但是当使用预定义的Unicode脚本时,此正则表达式适用于PHP:
/(?:[\p{Han}0-9]+)/simu
/[\x{4e00}-\x{9fa5}0-9]+/simu
这里有一些测试代码,两个正则表达式都已经就位; 注释其中一个以进行测试:
// Set the test string.
$string = '摄氏零下253';
// Run it through preg_match.
// $regex = "/(?:[\p{Han}0-9]+)/simu";
$regex = "/[\x{4e00}-\x{9fa5}0-9]+/simu";
preg_match($regex, $string, $matches);
// Send a UTF-8 header out so it looks nice.
header('Content-Type: text/html; charset=UTF-8');
// Dump the matches.
echo '<pre>';
print_r($matches);
echo '</pre>';
以下是该脚本的结果:
Array
(
[0] => 摄氏零下253
)
正则表达式有一些扩展,例如命名字符组。
您可以使用以下组:
\p{Han} 代表汉字字符。
正则表达式如下:
[\p{Han}]+[0-9]+