字符类

使用前面的方法可以查找指定的数字、字母、数字或空白,但是如果给定的是一个字符集,要求查找的字符只在这个集合中取或者在这个集合外取,就要用到中括号。中括号定义字符集的方式如表3-4中所示。

表3-4 中括号的用法

应用格式示例 说 明
[adwkf] 查找的字符是中括号内字符中的一个
[^adwkf] 查找的字符不是中括号内字符的就行
[b-f] 查找的字符是b到f中的一个
[^b-f] 查找的字符不是b到f中的一个
[1-5] 查找的字符是2到5中的一个
[1-46-9] 查找的字符是2到4或6到9中的一个
[a-w1-5A-W] 查找的字符是a到w, 2到5或A到W范围内的一个
[^一-龥]或[^\u4e00-\u9fa5] 查找的字符是中文字符

使用方括号[]包含个字符集,能够匹配其中任意1个字符。使用[^],则不匹配方括号内的字符,只能匹配该字符集之外的任意1个字符。

下面给定1个字符串,用regexp函数找出字符串中与方括号中任意字符匹配的字符。

code.matlab
>> a='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
>> m=regexp(a,'[AEIOU]','match')
m =
  1×5 cell 数组
    {'A'}    {'E'}    {'I'}    {'O'}    {'U'}

用regexp函数找出字符串中与方括号中任意字符不匹配的字符。

code.matlab
>> a='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
>> m=regexp(a,'[^AEIOU]','match')
m =
  1×21 cell 数组
  列 17
    {'B'}    {'C'}    {'D'}    {'F'}    {'G'}    {'H'}    {'J'}
  列 814
    {'K'}    {'L'}    {'M'}    {'N'}    {'P'}    {'Q'}    {'R'}
  列 1521
    {'S'}    {'T'}    {'V'}    {'W'}    {'X'}    {'Y'}    {'Z'}

给定1个字符串,用regexp函数找出字符串中落在方括号中指定字符范围的字符。

code.matlab
>> a='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
>> m=regexp(a,'[G-T]','match')
m =
 1×14 cell 数组
  列 17
    {'G'}    {'H'}    {'I'}    {'J'}    {'K'}    {'L'}    {'M'}
  列 814
    {'N'}    {'O'}    {'P'}    {'Q'}    {'R'}    {'S'}    {'T'}

给定1个字符串,用regexp函数找出字符串中1-5的数字和G-T的字母。

code.matlab
>> a='ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
>> m=regexp(a,'[1-3R-T]','match')
m =
  1×6 cell 数组
    {'R'}    {'S'}    {'T'}    {'1'}    {'2'}    {'3'}

查找字符串中的汉字,正则表达式中用中括号指定汉字范围为[一-龥]。

下面给定一个包含汉字的字符串,用regexp函数找出其中的汉字,用regexprep函数将找出的汉字替换为空字符串。

code.matlab
>> a='123 中 hwo 文 tr89 字符';
>> m=regexp(a,'[一-龥]','match')
m =
  1×4 cell 数组
    {'中'}    {'文'}    {'字'}    {'符'}
>> m=regexprep(a,'[一-龥]','')
m =
    '123  hwo  tr89 '