Skip to Main Content
Mathematica 錦囊妙計
book

Mathematica 錦囊妙計

by Sal Mangano
April 2014
Beginner to intermediate content levelBeginner to intermediate
830 pages
15h 21m
Chinese
GoTop Information, Inc.
Content preview from Mathematica 錦囊妙計
158
|
第四章
解決方案
在預設情況下,
a__
a___
等序列模式以
Shortest
方式進行匹配,這意味著模式會尋
找最短的匹配序列。以下的重複取代模式應該要將雜亂串列轉換為相同元素相鄰的串
列,它幾乎達到了,但其中有一個 3 1 不太聽話地留在原處,這是因為在最後一次匹
配時,
a___
匹配空序列(最短的情況),
b_
匹配 1
c__
也匹配 1
b_
匹配第 3 1,而
d___
匹配剩餘元素,這次轉換並沒有改變轉換前串列,因此
ReplaceRepeated
終止了。
相對地,我們於相同轉換使用
Longest
,強迫
a___
模式貪婪地搜尋最長序列,而其他模
式保持不變。[Page-160]
強迫
a___
匹配最長序列,但剩餘序列仍需滿足其他模式,這能夠找出所有被一個以上
的其他元素隔開的相同元素序列。
討論說明
熟悉正規表示式的讀者應該認得出來,以上提供的解法便是貪婪匹配及非貪婪匹配的差
異,這個差異經常使模式的設計者感到挫敗,因為通常非貪婪的模式會在意想不到的時
間出現。為避免這個情況發生,有個原則你必須謹記在心,
a__
模式可能僅匹配一個元
素,而
a___
模式可能匹配空序列;這個結果可能就是你要的,但也有可能完全不是。
你可能會問,既然預設原則是匹配最短序列,為什麼還需要
Shortest
設定模式,這是因
為對字串模式而言(請見第 5 章),匹配的預設原則是完全相反的,在需要的時候可使
Shortest
模式匹配最短字串,但最好限制於模式的最前端部分使用。
還有一點需謹記住,如果使用了數個
Shortest
Lo
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Ubuntu for Non-Geeks, 4th Edition

Ubuntu for Non-Geeks, 4th Edition

Rickford Grant, Phil Bull

Publisher Resources

ISBN: 9789863470106