特定中文字符串正则匹配

shen1hua shen1hua     2022-09-04     224

关键词:

最近遇到了一个匹配中文特定字符串的问题,记录下来

问题描述:匹配“美丽乡村”中的一个字符或几个,如果是多个字符,顺序不能改变,如“丽乡”

解决过程:

之前知道匹配中文字符串,正则表达式中使用的是unicode编码的范围,如/^[x{4e00}-x{9fa5}]+$/u

想着特定字符是否可以不用转换成unicode编码,于是写出正则  ‘/^[美]{0,1}[丽]{0,1}[乡]{0,1}[村}]{0,1}$/u‘,总不能正确匹配

于是把汉字改成unicode编码,正则  /^[x{7f8e}]{0,1}[x{4e3d}]{0,1}[x{4e61}]{0,1}[x{6751}]{0,1}$/u 匹配成功

 

转换unicode编码的函数,一开始用unicode_encode,在我的笔记本上可以正常匹配,但是到公司一试,竟然不能正常匹配,于是把"美"字的unicode编码打印出来,

居然是“8e7f”,两个字节颠倒了,百度了一下,原来是unicode编码有大端小端,用两个字节表示,用大端编码时,要把低位数据是字符编码的高字节,高字节是字符编码的高字节。

于是改用utf8StrToUnicode,成功解决。

function unicode_encode($str, $encoding = ‘UTF-8‘, $prefix = ‘[x{‘, $postfix = ‘}]{0,1}‘) {
$str = iconv($encoding, ‘UCS-2‘, $str);
$arrstr = str_split($str, 2);
$unistr = ‘‘;
for($i = 0, $len = count($arrstr); $i < $len; $i++) {
$dec = bin2hex($arrstr[$i]);
$unistr .= $prefix . $dec . $postfix;
}
return $unistr;
}

function utf8StrToUnicode($str ,$prefix = ‘[x{‘, $postfix = ‘}]{0,1}‘) {
$strLen = mb_strlen($str);
$uniStr = ‘‘;
for($i = 0;$i<$strLen;$i++){
$unicode = 0;
$subStr = mb_substr($str,$i,1);
$unicode = (ord($subStr[0]) & 0x1F) << 12;
$unicode |= (ord($subStr[1]) & 0x3F) << 6;
$unicode |= (ord($subStr[2]) & 0x3F);
$uniStr .= $prefix . dechex($unicode) . $postfix;
}
$uniStr = ‘/^‘.$uniStr.‘$/u‘;
return $uniStr;
}


求教正则表达式如何匹配

...里所有标点符号。正则表达式如何处理?正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻... 查看详情

当不跟随特定字符(?)时,如何使用正则表达式匹配字符(')?

...\')?【发布时间】:2012-10-0920:31:27【问题描述】:如果字符串前面没有问号,我如何编写正则表达式模式以按特定分隔符拆分字符串?我编写了一 查看详情

正则表达式匹配多个字符串但不匹配特定字符串

】正则表达式匹配多个字符串但不匹配特定字符串【英文标题】:Regextomatchseveralstringsbutnotspecificones【发布时间】:2014-10-0814:32:01【问题描述】:我正在使用Perl来搜索和匹配每行中符合条件的字符串,并希望省略包含特定字符串... 查看详情

特定字符串的正则表达式反向匹配?

】特定字符串的正则表达式反向匹配?【英文标题】:Regexinversematchingonspecificstring?【发布时间】:2011-09-0923:20:15【问题描述】:我想匹配以下com.my.company.moduleA.MyClassNamecom.my.company.moduleB.MyClassNamecom.my.company.anythingElse.MyClassName但不... 查看详情

正则表达式匹配不是特定子字符串的内容

】正则表达式匹配不是特定子字符串的内容【英文标题】:Regextomatchagainstsomethingthatisnotaspecificsubstring【发布时间】:2010-09-0718:20:57【问题描述】:我正在寻找一个正则表达式,它将匹配以一个子字符串开头且不以某个子字符串... 查看详情

正则表达式之匹配中文汉字的正则表达式介绍

这篇文章主要介绍了通过正则表达式准确匹配出字符串中存在的中文汉字,同时还有匹配双字节字符的正则,需要的朋友可以参考下w匹配的仅仅是中文,数字,字母,但是对于特殊需求来讲,仅匹配中文时常会用到匹配中文字... 查看详情

如何使用正则表达式判断字符串中是不是有中文

中文在正则里是特定的/[\u4e00-\u9fa5]+/g这就是匹配中文的正则表达式参考技术A\u4e00-\u9fa5匹配即有中文 查看详情

正则表达式:匹配除特定模式之外的所有内容

...够匹配所有内容的正则表达式但是一个以特定模式开头的字符串(特别是index.php以及后面的内容,例如index.php?id=2342343)【问题讨论】:你不想匹配什么特定模式?如果字符串匹配,您是否无法匹配您的模式并且不做某 查看详情

常用正则表达式大全!(例如:匹配中文匹配html)

...双字节字符(包括汉字在内):[^x00-xff]评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)匹配空白行的正则表达式:ns*r评注:可以用来删除空白行匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*?/>... 查看详情

正则表达式匹配特定字符串之后的文本,直到另一个特定字符串

】正则表达式匹配特定字符串之后的文本,直到另一个特定字符串【英文标题】:Regexmatchingatextafteraspecificstringuntilanotherspecificstring【发布时间】:2018-08-1118:24:52【问题描述】:如果我有以下示例:X-FileName:pallen(Non-Privileged).pstHere... 查看详情

js正则表达式验证匹配数字匹配字符串匹配中文匹配任意字符备忘录

...191boke.com/235792704.html正则表达式或“regex”用于匹配字符串的各个部分,下面是我创建正则表达式的备忘录。包括一些常用的验证、匹配数字、匹配字符串、匹配中文、匹配任意字符串。  匹配正则使用.test()方法lette... 查看详情

正则表达式匹配特定长度的字符串,中间有空格(任何地方)

】正则表达式匹配特定长度的字符串,中间有空格(任何地方)【英文标题】:Regextomatchspecific-lengthstringwithwhitespaceinthemiddle(anywhere)【发布时间】:2016-07-2920:47:30【问题描述】:我需要一个匹配短语(具有特定长度和结构)的正... 查看详情

#19re&jieba模块(代码片段)

前言在Python中,需要对字符串进行大量的操作,有时需要从一个字符串中提取到特定的信息,用切片肯定是不行的,所有这一节记录两个强大的文本处理模块,一个是正则表达式re模块,另一个是中文处理模块jieba,Herewogo!一、... 查看详情

如果正则表达式不包含特定单词,如何匹配它?

...【发布时间】:2011-10-0204:08:25【问题描述】:如果给定的字符串不只包含给定的单词(例如“any”),我想用Python或JavaScript编写一个正则表达式来匹配。例如:any:不匹配AnY:不匹配anyday:匹配anyday:匹配blabla:匹配【问题讨... 查看详情

正则表达式匹配字母数字,除了特定的子字符串

】正则表达式匹配字母数字,除了特定的子字符串【英文标题】:Regextomatchalphanumericexceptspecificsubstring【发布时间】:2021-08-0412:28:57【问题描述】:编辑:强制性条件:正则表达式必须插入以下语句:Regexregex=newRegex("<REGEX_STRING... 查看详情

用正则表达批量快速解决如“过滤注释的//”“查询特定单词”“匹配特定子字符串”等工作中难题(代码片段)

...则表达式的定义有以下几种:用某种模式去匹配一类字符串的公式,它主要是用来描述字符串匹配的工具。描述了一种字符串匹配的模式。可以用来检查字符串是否含有某种子串、将匹配的子串做替换或者从中取出符合... 查看详情

php中文正则匹配

...2汉字字母数字下划线正则表达式。编辑器查询或者js匹配中文匹配中文字符的正则表达式:[\u4e00-\u9fa5]或许你也需要匹配双字节字符,中文也是双字节的字符匹配双字节字符(包括汉字在内):[^\x00-\xff] 查看详情

在正则表达式中,匹配字符串的结尾或特定字符

】在正则表达式中,匹配字符串的结尾或特定字符【英文标题】:Inregex,matcheithertheendofthestringoraspecificcharacter【发布时间】:2022-01-0614:17:13【问题描述】:我有一个字符串。结尾不同,如index.php?test=1&amp;list=UL或index.php?list=UL&am... 查看详情