我想用正则表达式这个筛选出纯粹的中国名字:如何使用正则表达式匹配没有任何字母,数字或特殊字符的单词?
SELECT `name` FROM `table` WHERE `name` REGEXP '[u4e00-u9fa5]';
但是,根据this,这是不可能的,所以我想办法,从相反的方向,发现内容没有任何字母,数字和特殊字符(我知道它不是硬性的),但无法找到“和”运算符,那么该怎么做呢?
我想用正则表达式这个筛选出纯粹的中国名字:如何使用正则表达式匹配没有任何字母,数字或特殊字符的单词?
SELECT `name` FROM `table` WHERE `name` REGEXP '[u4e00-u9fa5]';
但是,根据this,这是不可能的,所以我想办法,从相反的方向,发现内容没有任何字母,数字和特殊字符(我知道它不是硬性的),但无法找到“和”运算符,那么该怎么做呢?
MariaDB使用PCRE正则表达式库以10.0.5版本开头:“Starting with MariaDB 10.0.5, MariaDB switched to the PCRE regular expression library for enhanced regular expressions.”。
要匹配包含中国信使用条目
REGEXP '[\\x{4e00}-\\x{9fa5}]'
甚至
REGEXP '\\p{Han}'
要没有中国字母匹配相反,项,用途:
REGEXP '^[^\\x{4e00}-\\x{9fa5}]*$'
or
REGEXP '^\\P{Han}*$'
Stribizew,SELECT'name' FROM'table' WHERE'name' REGEXP'^ \\ p {Han} * $',不会匹配没有中文字母的条目,而是纯中文单词。 –
是的,我知道。 '^ \\ p {Han} * $''匹配一个只包含中文字母的字符串。而'^ \\ P {Han} * $''会匹配一个由中文字母以外的字符组成的字符串。请注意后一个正则表达式中的大写'P',这意味着我们正在逆转Unicode属性类。 –
非常感谢 –
对不起,没有字母的“单词”是不可能的,对吧?另外,如果不应该有文字,也没有特殊的字符,你需要只匹配空格还是空格?太不清楚了。 –
你可以制作一个负面的字符类,比如'[^ A-Za-z0-9 ./,]',并且在必要时不断添加它,但是我不清楚你是在问什么。 –
@WiktorStribiżew对不起,我的意思是中文字或词。 –