教科书教我们使用 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/