我正在尝试使用以下两种规则之一删除给定字符串的一部分:
假设我的字符串是str。 ${str%%[aeoui]{1}*}
对第二条规则是否正确?我不知道该为第一条规则做些什么。
答案 0 :(得分:0)
我不确定您尝试使用哪种语言,因此我只使用一些通用语法。
1. s/^[^aeiouAEIOU]*(.*)/\1/
2. s/^[aeiouAEIOU]*(.*)/\1/
有一些方法可以使它不区分大小写,但为了清楚起见,我喜欢这样具体。
两者之间的唯一区别是#{1}}在#1中的^
只是否定了它。
[]
表示零或更多。例如,如果你使用*
,那么#1中必须至少有一个辅音,#2中至少有一个元音,否则测试就会失败。
在我的通用语法中,+
返回\1
找到的内容。
这里有一些非常粗糙的Perl来展示(在上面的例子中,打印语句中的(.*)
表现为$1
):
\1
这是输出:
#!/usr/bin/perl
$string1="abcdef";
$string2="fedcba";
if ($string1 =~ /^[aeiouAEIOU]*(.*)/) {
print "Test 1 on $string1: $1\n";
}
if ($string2 =~ /^[aeiouAEIOU]*(.*)/) {
print "Test 1 on $string2: $1\n";
}
if ($string1 =~ /^[^aeiouAEIOU]*(.*)/) {
print "Test 2 on $string1: $1\n";
}
if ($string2 =~ /^[^aeiouAEIOU]*(.*)/) {
print "Test 2 on $string2: $1\n";
}