我試圖使用或者兩個規則刪除特定字符串的一部分:正則表達式匹配字符串
- 消除所有的輔音(S)在字符串的開頭
- 消除字符串開頭的所有輔音字母。
假設我的字符串是str。 ${str%%[aeoui]{1}*}
正確的第二個規則?我不知道第一條規則該怎麼做。
我試圖使用或者兩個規則刪除特定字符串的一部分:正則表達式匹配字符串
假設我的字符串是str。 ${str%%[aeoui]{1}*}
正確的第二個規則?我不知道第一條規則該怎麼做。
我不確定你想用什麼語言來實現它,所以我只是使用一些通用的語法。
1. s/^[^aeiouAEIOU]*(.*)/\1/
2. s/^[aeiouAEIOU]*(.*)/\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";
}
而這裏的輸出:
Test 1 on abcdef: bcdef
Test 1 on fedcba: fedcba
Test 2 on abcdef: abcdef
Test 2 on fedcba: edcba
其實如果我刪除了{1}在表達式中工作得很好。 – 2014-09-20 01:30:26