Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
是否可以通过正则表达式替换matlab向量中的所有特殊字符?
谢谢 * 编辑:* 谢谢你的回复。我正在努力实现以下目标。我有一个文本文件,其中包含小说中的几段内容。我已将此文件读入向量。 fileText = ['Token1,''token_2''token%!3']等。 在这种情况下 , _ % !是特殊字符,我想将它们替换为空格('')。可以通过正则表达式来实现吗?我可以使用javascript来做到这一点,但无法在Matlab中使用它。 谢谢 回答: 如果“特殊字符”你的意思是较少用到的Unicode字符,如楼 , 露 ,或录 ,那么您可以使用该功能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用空格替换不是 az , AZ或0-9所有字符的方法: str = regexprep(str,'[^a-zA-Z0-9]',''); 这可能比尝试编写一个正则表达式来匹配每个单独的“特殊”字符要容易得多,因为可能有很多正则表达式。但是,如果您确定唯一的特殊字符将是_ , %和! ,则应达到与上述相同的效果: str = regexprep(str,'[_%!]',''); 另外,如Amro的评论中所述,您还可以使用函数ISSTRPROP将所有非字母数字字符替换为空白,如下所示: str(~isstrprop(str,'alphanum')) = ''; 更多&回答... |
![]() |
![]() |