您的位置 首页 > 科技

正则表达式指定特定中文 正则表达式匹配中文人名?

正则表达式指定特定中文

正则表达式指定特定中文 正则表达式匹配中文人名?

正则表达式匹配中文人的名字?

正则表达式匹配中文人名?

认证中文姓名的正则表达式:[\\一-\\龥],这一关系式是专门用来匹配中文姓名的。【正则表达式】正则表达式,又被称为标准关系式,是计算机专业的一个概念,这个概念最初是由Unix里的软件工具普及化开。正则表一般被用来查找、更换这些合乎某一方式(标准)的文字。正则模块主要分为DFA、NFA两类。很多程序语言都支持利用正则表达式开展字符串操作。比如,在Perl中就内建了一个功能强大的正则表达式模块。【发源】在1951 年,一位名字叫做Stephen Kleene的数学课专家,她在Warren McCulloch和Walter Pitts初期工作中的基础之上,发布了一篇题目是《神经网事件的表示法》的论文,利用称作正则结合的数学符号来描述此实体模型,引入了正则表达式的概念。正则表达式被作为用于叙述其称作“正则集的解析几何”的一种关系式,因此使用了“正则表达式”这一专业术语。

怎样用正则表达式匹配中国汉字?

var str = '您好地世界世界'

假如想用正则表达式的形式找到str中'地'的下标

var re=/\\\\地/

console.log(str.search(re))

控制面板打印出出 2.

(这就是其中一个方式,立即在想匹配的中国汉字前边加\\\\),例如 /\\\\地/

mysql正则表达式如何匹配中文?

MySQL 一直以来都适用正则匹配,不过对于正则更换则一直到MySQL 8.0 才适用。对于这类情景,之前要不在MySQL端解决,要不把统计数据取出来在应用端解决。

例如我想把表y1的列str1的诞生第3个action的子 串更换成dble,如何完成?

1. 自己写SQL层的储存函数公式。编码如下所示写死了3个,并没有提升,只是做为演试,MySQL 里非常不提议写这种函数公式。

mysql

DELIMITER $$

USE `ytt`$$

DROP FUNCTION IF EXISTS `func_instr_simple_ytt`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `func_instr_simple_ytt`(

f_str VARCHAR(1000), -- Parameter 1

f_substr VARCHAR(100), -- Parameter 2

f_replace_str varchar(100),

f_times int -- times counter.only support 3.

) RETURNS varchar(1000)

BEGIN

declare v_result varchar(1000) default 'ytt' -- result.

declare v_substr_len int default 0 -- search string length.

set f_times = 3 -- only support 3.

set v_substr_len = length(f_substr)

select instr(f_str,f_substr) into @p1 -- First real position .

select instr(substr(f_str,@p1 v_substr_len),f_substr) into @p2 Secondary virtual position.

select instr(substr(f_str,@p2 @p1 2*v_substr_len - 1),f_substr) into @p3 -- Third virtual position.

if @p1 gt 0 ampamp @p2 gt 0 ampamp @p3 gt 0 then -- Fine.

select

concat(substr(f_str,1,@p1 @p2 @p3 (f_times - 1) * v_substr_len - f_times)

,f_replace_str,

substr(f_str,@p1 @p2 @p3 f_times * v_substr_len-2)) into v_result

else

set v_result = f_str -- Never changed.

end if

-- Purge all session variables.

set @p1 = null

set @p2 = null

set @p3 = null

return v_result

end

$$

DELIMITER

-- 调用函数来升级:

mysqlgt update y1 set str1 = func_instr_simple_ytt(str1,'action','dble',3)

Query OK, 20 rows affected (0.12 sec)

Rows matched: 20 Changed: 20 Warnings: 0

2. 导出来用sed之类的专用工具替换掉在导进,流程如下所示:(推荐使用)1)导出表y1的记录。

mysqlmysqlgt select * from y1 into outfile '/var/lib/mysql-files/y1.csv'Query OK, 20 rows affected (0.00 sec)

2)用sed更换导出来的数据。

shellroot@ytt-Aspire-V5-471G:/var/lib/mysql-files# sed -i 's/action/dble/3' y1.csv

3)再度导进处理好的数据信息,进行。

mysql

mysqlgt truncate y1

Query OK, 0 rows affected (0.99 sec)

mysqlgt load data infile '/var/lib/mysql-files/y1.csv' into table y1

Query OK, 20 rows affected (0.14 sec)

Records: 20 Deleted: 0 Skipped: 0 Warnings: 0

之上二种或是强烈推荐导出来处理好了再重新导进,特性来的高些,并且不用自己费力写函数代码。那MySQL 8.0 针对之上的场景完成就比较简单了,一个函数就搞定了。

mysqlmysqlgt update y1 set str1 = regexp_replace(str1,'action','dble',1,3) Query OK, 20 rows affected (0.13 sec)Rows matched: 20 Changed: 20 Warnings: 0

也有一个regexp_instr 也非常有用,尤其是这类专指发生第几次的场景。例如界定 SESSION 自变量@a。

mysqlmysqlgt set @a = 'aa bb cc ee fi lucy 1 1 1 b s 2 3 4 5 2 3 5 561 19 10 10 20 30 10 40'Query OK, 0 rows affected (0.04 sec)

取得最少两次的数据出现的第二次子串的位置。

mysqlmysqlgt select regexp_instr(@a,'[:digit:]{2,}',1,2)

相关文章