Matlab - 如何替换向量中的所有特殊字符?

时间:2010-10-07 14:23:19

标签: regex matlab vector

是否可以通过正则表达式替换matlab向量中的所有特殊字符?

谢谢

* 编辑:*

感谢您的回复。我正在努力实现以下目标。我有一个文本文件,其中包含小说中的几个段落。我已将此文件读入矢量。

fileText = ['Token1,''token_2''标记%!3']等。

在这种情况下,_%!是特殊字符,我想用空格('')替换它们。这可以通过正则表达式实现吗?我可以使用javascript完成此操作,但无法在Matlab中使用它。

谢谢

1 个答案:

答案 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-Z0-9的所有字符。 ,或str = regexprep(str,'[^a-zA-Z0-9]',''); 空白:

_

这可能比尝试编写正则表达式以匹配每个“特殊”字符更容易,因为可能存在许多字符。但是,如果您某些,唯一的特殊字符是%!str = regexprep(str,'[_%!]',''); ,则应该与上面的相同:

str(~isstrprop(str,'alphanum')) = '';

此外,正如DOUBLE的评论中所述,您还可以使用函数REGEXPREP将所有非字母数字字符替换为空格,如下所示:

{{1}}