我怎样才能在正则表达式中表示epsilon?

ubi*_*con 3 regex epsilon

教科书教我们使用epsilon (?)符号编写正则表达式,但是如何将该符号直接转换为代码而不必完全重写我的正则表达式?

例如,我将如何编写这个正则表达式,它将捕获所有开始或结束a(或两者)的小写字符串.

不是100%肯定这是正确的,但......

((a | epsilon)[az] *a)| (a [az] *(a | epsilon))

所以应该匹配的一些字符串包括:

a //single "a" starts or ends with "a"

aa //starts and ends with "a"

ab //starts with "a"

ba //ends with "a"

aba //starts and ends with "a"

aaaaaaaa //starts and ends with "a"

abbbbbbb //starts with "a"

bbbbbbba //ends with "a"

abbbbbba //starts and ends with "a"

asdfhgdu //starts with "a"

onoineca //ends with "a"

ahnrtyna //starts and ends with "a"
Run Code Online (Sandbox Code Playgroud)

我只需要交换epsilon正确的符号,我不想修改表达式其余部分的任何部分.另外我想要清楚,我实际上并没有检查epsilon符号,我想要选择一个字符或什么都没有(好吧不是没有...... epsilon).

这样的符号是否存在?

我想要的是什么?

Kon*_*lph 7

只需省略,因为它表示空字符串:

([1-9]|)[0-9]*
Run Code Online (Sandbox Code Playgroud)

这个特例还有一个捷径:

([1-9]?)[0-9]*
Run Code Online (Sandbox Code Playgroud)

这?意味着前一个令牌零或一次出现.