是否可以通过正则表达式替换matlab向量中的所有特殊字符?
谢谢
*编辑:*
谢谢你的回复.我正在努力实现以下目标.我有一个文本文件,其中包含小说中的几个段落.我已将此文件读入矢量.
fileText = ['Token1,''token_2''标记%!3']等
在这种情况下 , _ % !是特殊字符,我想用空格('')替换它们.这可以通过正则表达式实现吗?我可以用javascript做到这一点,但不能让它在Matlab中工作.
谢谢
gno*_*ice 22
如果通过"特殊字符"表示不太常用的Unicode字符,如¥,¶,则可以使用函数REGEXPREP或设置比较函数(如ISMEMBER)(您可以首先使用函数将字符串转换为其等效的整数代码)如果需要可以加倍).以下是一些示例,其中除了标准英文字母字符(大写和小写)之外的所有字符都从字符串中删除:
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
Run Code Online (Sandbox Code Playgroud)
上面的所有选项都会产生相同的结果:
str =
ABCDEFabcdef
Run Code Online (Sandbox Code Playgroud)
编辑:
为了应对在更新的问题的具体例子,这里是你如何使用REGEXPREP更换所有字符都没有 ¼,a-z或A-Z用空格:
str = regexprep(str,'[^a-zA-Z0-9]','');
Run Code Online (Sandbox Code Playgroud)
这可能比尝试编写正则表达式以匹配每个"特殊"字符更容易,因为可能存在许多这些字符.但是,如果你一定是唯一的特殊字符会0-9,_和%,这应该实现与上述相同:
str = regexprep(str,'[_%!]','');
Run Code Online (Sandbox Code Playgroud)
此外,正如Amro的评论中所提到的,您还可以使用函数ISSTRPROP将所有非字母数字字符替换为空格,如下所示:
str(~isstrprop(str,'alphanum')) = '';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25824 次 |
| 最近记录: |