我想在 Ruby 中創建一個函式,它接受以下引數:
- 甲模式字串(例如, “ABAB”, “AABB”, “AAAA”,等)
- 一個輸入字串(例如, “dogcatdogcat”, “carcarhousehouse”等)
如果字串與模式匹配,則函式的回傳應為“true”,否則為“false”。
我的第一步方法:
使用正則運算式將輸入字串分隔成一個單詞陣列(例如["dog", "cat", "dog", "cat"])。
我的正則運算式專業知識不夠好,無法為這個問題找到正確的正則運算式。
有誰知道如何執行適當的正則運算式,以便假設輸入字串總是某種形式的模式來分隔重復出現的單詞?
uj5u.com熱心網友回復:
您可以使用捕獲組和反向參考多次匹配相同的子字串,例如:
abab = /\A(. )(. )\1\2\z/
aabb = /\A(. )\1(. )\2\z/
aaaa = /\A(. )\1\1\1\z/
'dogcatdogcat'.match?(abab) #=> true
'dogcatdogcat'.match?(aabb) #=> false
'dogcatdogcat'.match?(aaaa) #=> false
'carcarhousehouse'.match?(abab) #=> false
'carcarhousehouse'.match?(aabb) #=> true
'carcarhousehouse'.match?(aaaa) #=> false
在上面的模式中,(. )定義一個匹配一個或多個字符的捕獲組。\1然后參考第一個捕獲組并匹配相同的子字串。(\2是第二組,以此類推)
\A和\z是匹配字串開頭和結尾的錨點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/334371.html
