什么是正则表达式?
正则表达式是定义模式的重要符号。每个模式连接一组字符串。因此,正则表达式将作为字符串集的名称。
它支持适当且有用的符号来描述令牌。正则表达式定义了有限自动机(转换图)接受的语言。
正则表达式是在字母$\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}
${L^{*}_{1}}$=${L^{0}_{1}}$∪${L^{1}_{1}}$∪${L^{2}_{1}}$∪.....
${L^{*}_{1}}=\displaystyle\bigcup\limits_{i=0}^{∞}{L^{i}_{1}}$
${L^{+}_{1}}$=${L^{1}_{1}}$∪${L^{2}_{1}}$∪.....
${L^{+}_{1}}=\displaystyle\bigcup\limits_{i=0}^{∞}{L^{i}_{1}}$
正则表达式的扩展
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}。此运算符具有与*和+相同的优先级和结合性。/