另外,对于一般的编码来解析字符串是否有用?一个简单的例子将是有帮助的.
一种语言由字符串组成.例如,英语是一种语言,它由字符串组成.
>这些字符串由符号组成,称为字母表.因此,字符串只是字母表中的符号的连接.
所以你可以有一个字符串(这是记住,只是一个符号的连接),它不是给定语言的一部分.或者它可能是在语言.
所以让我们说你有一个由2个符号组成的字母:“0”和“1”.并且让我们说你想使用该字母表中的符号创建一种语言.您可以创建以下规则:“为了使用我的语言字符串,它必须只有0和1.
所以这些字符串是你的语言:
> 0
> 1
> 01
> 11001101
> …等
这些不会用你的语言:
> 2
桃子
> 00101105
这是一个很简单的语言.这样做:“用我的语言,每个字符串(类似于英文中的一个有效的单词)必须为0,然后可以跟随任何数字的0或1的”
这些语言是:
> 0111111
> 0000000
> 0101010110001
这些不是:
> 1
> 10000
> 1010
> 2000000
而不是使用单词定义语言 – 而这些语言可能会变得非常复杂(“1后跟2 0”,之后是1和0的结尾以1“),我们提出了这种称为”正则表达式“的语法定义语言.
第一种语言本来是:
(0 | 1)*
(0或1,无限重复)
下一个:0(0 | 1)*
(0,后跟0和1的任意数).
所以让我们想一下编程.当你创建一个正则表达式时,你在说“看这个文本,回到我匹配这个模式的字符串”.这是真的说“我已经定义了一种语言.”把本文中的所有字符串返回给我,这是我的语言.
所以当你创建一个“正则表达式”时,你实际上是定义一个常规语言,这是一个数学概念. (实际上,perl-like正则表达式定义了“非正规”语言,但这是一个单独的问题.)
通过学习正则表达式的语法,您正在学习如何创建语言的内容,以便稍后可以看到给定的字符串是否为“语言”.因此,人们通常会说,正则表达式是用于模式匹配的,这基本上是你在看一个模式时所做的,看看它是否符合你的语言规则.
(这很长,它是否回答你的问题?)