什么是正则表达式?

正则表达式是定义模式的重要符号。每个模式连接一组字符串。因此,正则表达式将作为字符串集的名称。

它支持适当且有用的符号来描述令牌。正则表达式定义了有限自动机(转换图)接受的语言。

正则表达式是在字母 $\sum$上定义的。

如果 R 是正则表达式,L(R)则表示正则表达式所表示的语言。

语言- 它是一些固定字母表上的字符串集合。空串可以用ε表示。

示例- 如果 L(语言)=长度为 2的 0和 1字符串集

then L = {00, 01, 10, 11}

示例- 如果 L = {1}

then L*=L0∪L1∪L2∪….. Here * can be 0, 1, 2, 3………..
∴ L*={ε}∪{1}∪{11}∪…..
∴ L*={ε,1,11,111,…..}

常规语言操作

常规语言的各种操作如下 -

如果L 1 ={00,10} & L 2 ={01,11}

手术描述例子
Union两种语言 L 1和 L 2 的联合产生可能是语言 L 1或语言 L 2或两者的字符串集合。L 1 ∪L 2 = {L 1 中的字符串和L 2 中的字符串的集合}L1∪L2={00, 10, 01, 11}
级联两种语言升级联1和L 2创建其通过在L中的字符串组合来形成一组字符串1与字符串以L 2(以L串1之后,应当以L串2)。L 1 L 2 ={L 1 中的字符串后跟L 2 中的字符串的集合}。L1L2={0001, 0011, 1001,1011}
L 1 ${L^{*}_{1}}$的Kleen 闭包Kleene 闭包定义了字符串中输入符号的零次或多次出现。它由一个空字符串 Ɛ(一组具有 0 次或多次输入符号出现的字符串)组成。
${L^{*}_{1}}$=${L^{0}_{1}}$∪${L^{1}_{1}}$∪${L^{2}_ {1}}$∪.....
${L^{*}_{1}}=\displaystyle\bigcup\limits_{i=0}^{∞} {L^{i}_{1}}$
${L^{*}_{1}}$={ε,00,10,1010, 0010,1000,0000,000000, 001000,….}
正闭包 ${L^{+}_{1}}$正闭包表示字符串中出现一次或多次输入符号。它消除了空字符串 Ɛ(具有 1 个或多个输入符号外观的字符串集)。
${L^{+}_{1}}$=${L^{1}_{1}}$∪${L^{2}_{1}}$∪.....
${L^{ +}_{1}}=\displaystyle\bigcup\limits_{i=0}^{∞} {L^{i}_{1}}$
${L^{+}_{1}}$={00,10,1010, 0010,1000,0000,000000, 001000,....}

正则表达式的扩展

Kleene 建议在 1950 年代使用正则表达式,主要操作是联合、串联和 Kleene 闭包。

指定了一些直接使用的符号扩展 -

  • 一个或多个实例- 一元后缀运算符 + 显示正则表达式及其语言的正闭包。它定义了如果 a 是正则表达式,那么 (a) + 表示语言 ( L(a)+。有两个代数定律 $r^{*}$= r+|e 和 r+ =r$r^{*}$= $r^{*}$r 关联正闭包和 Kleene 闭包。

  • 零个或一个实例- 一元后缀运算符?定义零个或一个外观。它定义了 r? 类似于 r|e 或 L(r?) = L(r)U {e}。此运算符具有与 * 和 + 相同的优先级和结合性。/

猜你喜欢