我想用正則表達式這個篩選出純粹的中國名字:如何使用正則表達式匹配沒有任何字母,數字或特殊字符的單詞?
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對不起,我的意思是中文字或詞。 –