是否可以通过正则表达式替换matlab向量中的所有特殊字符?
谢谢
* 编辑:*
感谢您的回复。我正在努力实现以下目标。我有一个文本文件,其中包含小说中的几个段落。我已将此文件读入矢量。
fileText = ['Token1,''token_2''标记%!3']等。
在这种情况下,_%!是特殊字符,我想用空格('')替换它们。这可以通过正则表达式实现吗?我可以使用javascript完成此操作,但无法在Matlab中使用它。
谢谢
答案 0 :(得分:22)
如果使用“特殊字符”表示频率较低的¥
字符,例如¶
,¼
或str = ['ABCDEFabcdefÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐ']; %# A sample string
str = regexprep(str,'[^a-zA-Z]',''); %# Remove characters using regexprep
str(~ismember(str,['A':'Z' 'a':'z'])) = ''; %# Remove characters using ismember
%# (as suggested by Andrew)
str(~ismember(double(str),[65:90 97:122])) = ''; %# Remove characters based on
%# their integer code
,则可以使用函数{{ 3}}或设置比较函数,如Unicode(如果需要,您可以先使用函数REGEXPREP将字符串转换为等效的整数代码)。以下是一些示例,其中除了标准英文字母字符(大写和小写)之外的所有字符都从字符串中删除:
str =
ABCDEFabcdef
上述所有选项都会产生相同的结果:
a-z
修改强>
在回答更新问题中的具体示例时,您可以使用ISMEMBER替换不是 A-Z
,0-9
的所有字符。 ,或str = regexprep(str,'[^a-zA-Z0-9]','');
空白:
_
这可能比尝试编写正则表达式以匹配每个“特殊”字符更容易,因为可能存在许多字符。但是,如果您某些,唯一的特殊字符是%
,!
和str = regexprep(str,'[_%!]','');
,则应该与上面的相同:
str(~isstrprop(str,'alphanum')) = '';
此外,正如DOUBLE的评论中所述,您还可以使用函数REGEXPREP将所有非字母数字字符替换为空格,如下所示:
{{1}}