规则表达式

Mathematica 的一般模式提供了进行字符串操作的强大方法. 但是如果对专门的字符串操作语言熟悉的话,有时可能会发现使用规则表达式 记号指明字符串模式是方便的. 在 Mathematica 中可以使用 RegularExpression 对象实现.

RegularExpression["regex"] 指定的规则表达式

Mathematica 中使用规则表达式记号.

这里取代所有出现的 .
In[1]:=
Click for copyable input
Out[1]=
这里使用 Mathematica 的一般字符串模式指明同样的操作.
In[2]:=
Click for copyable input
Out[2]=
可以把规则表达式与一般模式混合使用.
In[3]:=
Click for copyable input
Out[3]=

RegularExpressionMathematica 中支持所有标准规则表达式结构.

c字母字符 c
.除了新的一行以外的任何字符
[c1c2...]任何 字符
[c1-c2]- 范围内的任何字符
[^c1c2...]除了 的任何字符
p*重复0次或多次的 p
p+重复1次或多次的 p
p?出现0次或1次的 p
p{m,n}重复 mn 次之间的 p
p*?, p+?, p??最短的符合匹配条件的一致字符串
(p1p2...)与序列 匹配的字符串
p1|p2 匹配的字符串

Mathematica 规则表达式中的基本结构.

这里寻找与特定规则表达式匹配的子串.
In[4]:=
Click for copyable input
Out[4]=
这里使用 Mathematica 一般字符串模式做同样的操作.
In[5]:=
Click for copyable input
Out[5]=

在许多规则表达式结构和基本的 Mathematica 一般字符串模式结构之间存在紧密的对应关系.

._ (严格上,Except["\n"])
[c1c2...]Characters["c1c2..."]
[c1-c2]CharacterRange["c1","c2"]
[^c1c2...]Except[Characters["c1c2..."]]
p*p...
p+p..
p?p|""
p*?, p+?, p??Shortest[p...],...
(p1p2...)(p1~~p2~~...)
p1|p2p1|p2

在规则表达式和一般字符串模式结构之间的对应关系.

正如在 Mathematica 一般字符串模式中一样,在规则表达式中也有对不同的通用字符类的特殊记号. 注意,用户需要使用 符号来在 Mathematica 规则表达式字符串中输入大多数记号.

\\d数字 0-9 (DigitCharacter
\\D非数字 (Except[DigitCharacter]
\\s空格、换行、tab 或其他空格字符 (WhitespaceCharacter
\\S非空格字符(Except[WhitespaceCharacter]
\\w词字符(字母、数字或 )(WordCharacter
\\W非词字符(Except[WordCharacter]
[[:class:]]位于命名类中的字符
[^[:class:]]不位于命名类中的字符

字符类的规则表达式记号.

这里给出带有数字字符的每个 的子串.
In[6]:=
Click for copyable input
Out[6]=
这里使用 Mathematica 的一般字符串模式做同样的事情.
In[7]:=
Click for copyable input
Out[7]=

Mathematica 支持标准 POSIX 字符类 .

这里寻找子序列中的大写字母.
In[8]:=
Click for copyable input
Out[8]=
这里做同样的事情.
In[9]:=
Click for copyable input
Out[9]=
^字符串的开头 (StartOfString
$字符串的末尾 (EndOfString
\\b词边界(WordBoundary
\\B除了词边界的任何位置 (Except[WordBoundary]

字符串中位置的规则表达式记号.

在一般的 Mathematica 模式中,可以使用例如 等结构来对匹配的对象给出任意的名字. 在规则表达式中,可以使用如下方法处理序列号:在一个规则表达式中第 n 个带括号的模式对象 (p) 在模式内为 \\n,而在模式外为.

这里寻找所出现的相同字母对.
In[10]:=
Click for copyable input
Out[10]=
现在使用 Mathematica 的一般字符串模式做同样的事情.
In[11]:=
Click for copyable input
Out[11]=
这里 指的是与 匹配的字母.
In[12]:=
Click for copyable input
Out[12]=
这是 Mathematica 模式版本.
In[13]:=
Click for copyable input
Out[13]=
New to Mathematica? Find your learning path »
Have a question? Ask support »