字符串模式
字符串操作函数如 StringReplace 的一个重要特征是它们不仅能够处理由字母组成的字符串,也能处理由字符串集合组成的模式.
| Out[1]= |  |
这里使用

替代任何字符.
| Out[2]= |  |
可以使用包含与 Mathematica 符号模式对象相混合的普通字符串的字符串表达式 来指明字符串模式.
字符串表达式.
这是表示后面带有任意单个字符的字符串

的字符串表达式.
| Out[3]= |  |
| Out[4]= |  |
| StringMatchQ["s",patt] | 测试 是否与 patt 匹配 |
| StringFreeQ["s",patt] | 测试 是否不含有与 patt 匹配的子串 |
| StringCases["s",patt] | 给出与 patt 匹配的子串 的列表 |
| StringCases["s",lhs->rhs] | 用 rhs 替换每个 lhs |
| StringPosition["s",patt] | 给出与 patt 匹配的子串的位置列表 |
| StringCount["s",patt] | 计算有多少子串与 patt 匹配 |
| StringReplace["s",lhs->rhs] | 替换与 lhs 匹配的每个子串 |
| StringReplaceList["s",lhs->rhs] | 给出所有替换 lhs 的方法列表 |
| StringSplit["s",patt] | 在每个与 patt 匹配的子串处分解 s |
| StringSplit["s",lhs->rhs] | 在 lhs 处分解,并在该位置插入 rhs |
支持字符串模式的函数.
| Out[5]= |  |
这里给出在字符串

后出现的每个字符.
| Out[6]= |  |
| Out[7]= |  |
可以在字符串模式中使用所有标准 Mathematica 模式对象.
总是表示单个字符.
表示一个或多个字符组成的序列.

表示任意单个字符.
| Out[8]= |  |

表示一个或多个字符组成的任意序列.
| Out[9]= |  |

表示0个或多个字符组成的任意序列.
| Out[10]= |  |
| "string" | 由字符组成的字符串 |
| _ | 任意单个字符 |
| __ | 由一个或多个字符组成的任意序列 |
| ___ | 由0个或多个字符组成的任意序列 |
| x_, x__, x___ | 名称有 x 的子串 |
| x:pattern | 名称为 x 的模式 |
| pattern.. | 重复1次或多次的模式 |
| pattern... | 重复0次或多次的模式 |
| {patt1,patt2,...} 或者 patt1|patt2|... | 与至少一个 匹配的模式 |
| patt/;cond | cond 等于 True 的模式 |
| pattern?test | 对每个字符 test 等于 True 的模式 |
| Whitespace | 空格字符组成的序列 |
| NumberString | 数字字符串 |
| charobj | 表示字符类的对象(参见下面的讨论) |
| RegularExpression["regexp"] | 与规则表达式匹配的子串 |
在字符串模式中的对象.
| Out[11]= |  |
只包含

或

的子序列.
| Out[12]= |  |
| Out[13]= |  |
可以使用标准 Mathematica 结构,如 Characters["c1c2..."] 和 CharacterRange["c1", "c2"] 来产生在字符串模式中应用的其它字符列表.
| Out[14]= |  |
| Out[15]= |  |
这里在

到

的范围内给出字符.
| Out[16]= |  |
除了允许明确的字符列表,Mathematica 还提供了字符串模式中可能字符的一些通用类的符号规定.
字符类的规定.
| Out[17]= |  |
| Out[18]= |  |
| Out[19]= |  |
Out[20]//InputForm= |
| |  |
| Out[21]= |  |
字符串模式经常用作从文本数据的字符串中提取结构的方法. 通常通过使用与所对应结构的不同部分匹配的字符串模式的不同部分来实现.
这里选出每个后面带有一个数字的

.
| Out[22]= |  |
| Out[23]= |  |
| Out[24]= |  |
| Out[25]= |  |
在许多情况下,文本数据可能包含空白、换行或tab这些可以被认作"空格"可以忽略的序列. 在 Mathematica 中,符号Whitespace 表示任何这种类型的序列.
| Out[26]= |  |
| Out[27]= |  |
字符串模式通常应用于一个给定字符串中任何位置出现的子串. 然而,有时,指定只能用于特定位置子串的模式是方便的. 这可以通过在字符串模式中包含符号如 StartOfString 来实现.
表示字符串中特定位置的结构.
这里在一个字符串中替换所有出现的

.
| Out[28]= |  |
这里仅当

在一个字符串开头处时替换它.
| Out[29]= |  |
这里替换所有出现的子串

.
| Out[30]= |  |
| Out[31]= |  |
字符串模式只允许同种
和作为普通 Mathematica 模式的其它条件.
| Out[32]= |  |
当在一个字符串模式中给出一个对象,如
或 e..,Mathematica 自动假设用户想要它匹配最长可能字符序列. 然而,有时,用户可能想要匹配的是最短可能字符序列. 这可以使用 Shortest[p] 指明.
表示最长和最短匹配的对象.
| Out[33]= |  |
| Out[34]= |  |
Mathematica 默认情况下认为字符
和
是不同的. 但是通过在字符串操作中设置选项IgnoreCase->True,可以让 Mathematica 同等对待大小写字母.
指定与大小写无关的字符串操作.
这里替换所有出现的

,与大小写无关.
| Out[35]= |  |
在一些字符串操作中,用户可能要指明是否包含子串之间的重叠. 默认情况下,StringCases 和 StringCount 不包含重叠,但是 StringPosition 包含重叠.
| Out[36]= |  |
| Out[37]= |  |
| Out[38]= |  |
处理字符串中重叠的选项.
| Out[39]= |  |
| Out[40]= |  |
| Out[41]= |  |