使用前面的方法可以查找指定的数字、字母、数字或空白,但是如果给定的是一个字符集,要求查找的字符只在这个集合中取或者在这个集合外取,就要用到中括号。中括号定义字符集的方式如表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 数组
列 1 至 7
{'B'} {'C'} {'D'} {'F'} {'G'} {'H'} {'J'}
列 8 至 14
{'K'} {'L'} {'M'} {'N'} {'P'} {'Q'} {'R'}
列 15 至 21
{'S'} {'T'} {'V'} {'W'} {'X'} {'Y'} {'Z'}
给定1个字符串,用regexp函数找出字符串中落在方括号中指定字符范围的字符。
code.matlab
>> a='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
>> m=regexp(a,'[G-T]','match')
m =
1×14 cell 数组
列 1 至 7
{'G'} {'H'} {'I'} {'J'} {'K'} {'L'} {'M'}
列 8 至 14
{'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 '