首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中匹配"Chinese+Number“模式的正则表达式

在Python中匹配"Chinese+Number“模式的正则表达式
EN

Stack Overflow用户
提问于 2014-07-02 03:24:30
回答 4查看 2.3K关注 0票数 3

在Python3.3中,我想匹配下面的模式,但是它一直失败。

代码语言:javascript
复制
摄氏零下253

我用了下面的正则表达式。

代码语言:javascript
复制
[^\x00-\x47\x58-\x7F]+

它不排除除了数字以外的所有ascii吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-02 03:40:06

您正在混合ASCII数字的十进制和十六进制值。\x转义序列表示十六进制转义,为此您应该使用所需的ASCII字符的十六进制值。

参考ASCII表(http://www.asciitable.com/),范围应该是02F,然后是3A7F,您的正则表达式应该如下所示:

代码语言:javascript
复制
[^\x00-\x2F\x3A-\x7F]+

然而,上面的正则表达式除了包含中文字符外,还包括所有字符(事实上,它包括除127个ASCII字符减去数字之外的所有内容)。

票数 3
EN

Stack Overflow用户

发布于 2014-07-02 03:46:58

根据您正在使用的编程语言,您可以使用以下代码。

代码语言:javascript
复制
[\p{Han}\p{N}]+

\p{Han}与汉字脚本中的字符匹配。 \p{N}匹配任何脚本中的任何类型的数字字符。

现场演示

票数 9
EN

Stack Overflow用户

发布于 2014-07-02 03:47:32

不确定您使用的是哪种语言,但是当使用预定义的Unicode脚本时这个正则表达式在PHP中工作。

代码语言:javascript
复制
/(?:[\p{Han}0-9]+)/simu

由于并非所有regex的实现都设置了预定义的Unicode脚本,因此它可能更易于移植:

代码语言:javascript
复制
/[\x{4e00}-\x{9fa5}0-9]+/simu

下面是两个regex都已就位的一些测试代码;请注释其中一个或另一个进行测试:

代码语言:javascript
复制
// 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>';

下面是这个脚本的结果:

代码语言:javascript
复制
Array
(
    [0] => 摄氏零下253
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24522394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档