假設我們有一個規則的折點模式,它不能被拆分成段。例如。它可以是中綴(在單詞內部添加一些字母)或元音變化('ablaut')。考慮德國人的一個例子。我可以在Perl 6中修改文字正則表達式嗎?
my @words = <Vater Garten Nagel>;
my $search = "/@words.join('|')/".EVAL;
"mein Vater" ~~ $search;
say $/; # 「Vater」
這三個德語單詞組成,通過改變他們的第二個字母「A」至「A」複數。所以'Vater'→'Väter','Garten'→'Gärten','Nagel'→'Nägel'。
有沒有辦法修改我的$search
正則表達式,使它匹配複數形式? 這裏就是我在尋找:
my $search_ä = $search.mymethod;
"ihre Väter" ~~ $search_ä;
say $/; # 「Väter」
當然,我可以修改@words
陣列和「預編譯」成一個新的regex
。但是如果可能的話,直接修改現有的regex
會更好。
你只應該是讓後優化一個工作狀態和確定你的代碼後不夠快。 –
@BradGilbert,默認情況下使用這種優化可能有什麼缺點(一般來說,我使用數百個搜索關鍵字和大量文本語料庫,所以如果沒有這種優化,它真的很慢)?除了代碼不夠靈活和不太優雅外。 –