字符串的长度是在字符串中字符的数目(串行的长度),它可以是任何非负整数。“空串”是在Σ上的唯一的长度为0的字符串,并被指示为
ε或
λ。
在Σ上的所有长度为
n的字符串的集合指示为Σ。例如,如果Σ = {0, 1}则Σ= {00, 01, 10, 11}。注意Σ= {ε}对于任何字母表Σ。
在Σ上的所有任何长度的字符串的集合是Σ的Kleene闭包并被指示为Σ*。依据
,。例如,如果Σ = {0, 1}则Σ* = {ε, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011,…}。尽管Σ*自身是可数无限的,Σ*的所有元素都有有限长度。
在Σ上一个字符串的集合(就是Σ*的任何子集)被称为在Σ上的形式语言。例如,如果Σ = {0, 1},则带有偶数个零的字符串的集合({ε, 1, 00, 11, 001, 010, 100, 111, 0000, 0011, 0101, 0110, 1001, 1010, 1100, 1111,…})是在Σ上的形式语言。
串接和子串
“串接”是Σ*上的重要二元运算。对于Σ*中的两个字符串
s和
t,它们的串接被定义为在
s中的字符串行之后跟随着
t中的字符串行,并被指示为
st。例如,Σ = {a, b,…, z},并且
s=bear且
t=hug,则
st=bearhug而
ts=hugbear。
字符串串接是结合性的,但非交换性运算。空串充当单比特;对于任何字符串
s,有ε
s=
sε =
s。所以,集合Σ*和串接运算形成了幺半群,就是从Σ生成的自由幺半群。此外,长度函数定义从Σ*到非负整数的幺半群同态。
词典排序
经常需要定义在字串集合上的次序。如果字符表Σ有一个全序(cf.字母序),则可以定义在Σ*上的叫做词典序的全序。注意因为Σ是有限的,总是可以定义在Σ继而在Σ*上的良好次序。例如,如果Σ = {0, 1}并且0 < 1,则Σ*的词典次序是ε < 0 < 00 < 000 <…< 011 < 0110 <…< 01111 <…< 1 < 10 < 100 <…< 101 <…< 111…
字串运算
在形式理论中经常出现一些在字串上的额外运算。它们在条目字符串运算中给出。