匹配单词开头的任何子字符串

Bra*_*man 3 regex perl

例如,用一条线一样previous,我希望模式匹配的线条p,pr,pre,prev,等等,所有的方式达到previous.我不希望它匹配像prevalent或的行previse.除了明显的(^(p|pr|pre|prev|...|previous)$)之外,是否有一种模式可以实现这一目标?

注意:我不需要像上面的模式那样捕获它,而且我使用Perl的正则表达式风格(在Perl中).

Ada*_*kin 9

/^p(r(e(v(i(o(u(s)?)?)?)?)?)?)?$/
Run Code Online (Sandbox Code Playgroud)

并且只是仔细检查它是否有效:

for (qw/p pr pre previous prevalent previse/) {
    $result = (/^p(r(e(v(i(o(u(s)?)?)?)?)?)?)?$/? "yes" : "no");
    print "Checking $_: $result\n";
}
Run Code Online (Sandbox Code Playgroud)

生产:

Checking p: yes
Checking pr: yes
Checking pre: yes
Checking previous: yes
Checking prevalent: no
Checking previse: no
Run Code Online (Sandbox Code Playgroud)