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

例如,我将如何编写这个正则表达式来捕获所有以 a (或两者)开头或结尾的小写字符串。

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

((a| epsilon )[a-z] * a) | (a[a-z] * (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"

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

是否存在这样的符号?

我想要的可能吗?

最佳答案

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

([1-9]|)[0-9]*

对于这种特殊情况,还有一个快捷方式:
([1-9]?)[0-9]*
? 表示前面的标记出现零次或一次。

关于regex - 如何在正则表达式中表示 epsilon?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3716269/

10-11 03:33
查看更多