首页 文章资讯内容详情

什么是正则表达式?

2026-06-03 1 花语

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

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

正则表达式是在字母$\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,…..}

常规语言操作

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

如果L1={00,10}&L2={01,11}

手术描述例子Union两种语言L1和L2的联合产生可能是语言L1或语言L2或两者的字符串集合。L1∪L2={L1中的字符串和L2中的字符串的集合}L1∪L2={00,10,01,11}级联两种语言升级联1和L2创建其通过在L中的字符串组合来形成一组字符串1与字符串以L2(以L串1之后,应当以L串2)。L1L2={L1中的字符串后跟L2中的字符串的集合}。L1L2={0001,0011,1001,1011}L1${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}。此运算符具有与*和+相同的优先级和结合性。/