能否通过正则表达式替换Matlab向量中的所有特殊字符呢?
谢谢。
*编辑:*
谢谢你们的回答。我想要实现以下功能。我有一个包含小说几段的文本文件,我已将此文件读入向量中。
fileText = ['Token1,' 'token_2' 'token%!3'] 等等。
在这种情况下,_ % ! 是特殊字符,我想用空格('')替换它们。这可以通过正则表达式实现吗?我可以用JavaScript做到这一点,但无法在Matlab中使其工作。
谢谢。
能否通过正则表达式替换Matlab向量中的所有特殊字符呢?
谢谢。
*编辑:*
谢谢你们的回答。我想要实现以下功能。我有一个包含小说几段的文本文件,我已将此文件读入向量中。
fileText = ['Token1,' 'token_2' 'token%!3'] 等等。
在这种情况下,_ % ! 是特殊字符,我想用空格('')替换它们。这可以通过正则表达式实现吗?我可以用JavaScript做到这一点,但无法在Matlab中使其工作。
谢谢。
¥
、¶
或¼
,那么您可以使用REGEXPREP函数或设置比较函数,比如ISMEMBER(如果需要,您可以先使用DOUBLE函数将字符转换为其等效的整数代码)。以下是一些示例,从字符串中删除除标准英文字母(小写和大写)以外的所有字符: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
以上所有选项都会产生相同的结果:
str =
ABCDEFabcdef
编辑:
针对问题中更新后的具体示例,以下是如何使用 REGEXPREP 将所有不是 a-z
、A-Z
或 0-9
的字符替换为空格的方法:
str = regexprep(str,'[^a-zA-Z0-9]','');
这可能比尝试编写正则表达式来匹配每个单独的“特殊”字符更容易,因为可能会有许多这样的字符。但是,如果您确信只有_
、%
和!
这些特殊字符,那么以下方法应该可以实现与上述方法相同的效果:
str = regexprep(str,'[_%!]','');
另外,正如Amro的评论中提到的那样,您还可以使用ISSTRPROP函数将所有非字母数字字符替换为空格,方法如下:
str(~isstrprop(str,'alphanum')) = '';
'A':'Z'
这样的东西会保持为字符数组而不是自动转换为double。 - gnovice