教科书教我们使用epsilon (ε)
符号编写正则表达式,但是如何将该符号直接转换为代码而不必完全重写我的正则表达式?
例如,我如何编写这个正则表达式,它将捕获在a
(或两者)中开始或结束的所有小写字符串。
不是100%确定这是正确的但是......
((a | epsilon
)[a-z] *
a)| (A [A-Z] *
(一个| 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)。
这样的符号是否存在?
我想要的是什么?
答案 0 :(得分:7)
省略,因为它表示空字符串:
([1-9]|)[0-9]*
这个特例还有一个捷径:
([1-9]?)[0-9]*
?
表示前一个标记出现零次或一次。