在基本运算中以正则表达式表示^和$

san*_*han 3 regex

我读过一本书,它指出,在正则表达式所有的基本操作是concatatenationor(|)closure(*)parenthesis覆盖默认优先级。其他所有操作只是一个或多个基本操作的快捷方式。

例如,(AB)+快捷方式被扩展到空字符串,(AB)(AB)*并且(AB)?(? | AB)其中?。首先,我查找了ASCII表,但不确定将哪个字符指定为空字符串。是ASCII 0

我想弄清楚如何表达的快捷方式^,并$作为^ABAB$表达的基本操作,但我不知道如何做到这一点。您能帮我了解一下这是如何体现的吗?

mel*_*ene 7

正则表达式(它们在数学中的定义方式)实际上是字符串生成器,而不是搜索模式。它们用作特定类的字符串集的便捷表示法。(这些集合可以包含无限数量的字符串,因此枚举所有元素是不实际的。)

在编程环境中,正则表达式通常用作灵活的搜索模式。用数学术语来说,我们说的是“ 找到目标字符串S的子字符串,它是由正则表达式R生成的集合的元素 ”。此子字符串搜索不属于正则表达式;就像实际的正则表达式引擎周围存在一个循环,试图将每个可能的子字符串与正则表达式进行匹配(并在找到匹配项时停止)。

用基本的正则表达式来讲,就像.*在模式之前和之后都添加了一个隐式。当你看到它这样,^$简单地防止.*从正则表达式的开始/结束添加。

顺便说一句,正则表达式(通常在编程中使用)实际上不是数学意义上的“正则”。即,有许多构造无法转换为上面列出的基本操作。这些措施包括反向引用(\1\2,...),字边界(\b\<\>),先行/向后看断言((?= )(?! )(?<= )(?<! )),等等。

至于?:它没有字符代码,因为空字符串是字符串,而不是字符。具体来说,字符串是字符序列,空字符串不包含任何字符。