試圖使用gsub
以字符串的出發順序同意字符以及字符'qu'
的組合進行轉換。如何通過一個正則表達式((two specific character in a specific order) OR (any character in a set of characters)) any number of times
連續特定的字符零次或多次紅寶石正則表達式
我已經嘗試了以下無濟於事聲明:
"stupid".gsub(/([(qu)]*[^aeiou]*)(.*)/, '\2\1') + 'ay' #=> "upidstay" correct!
"uce".gsub(/([(qu)]*[^aeiou]*)(.*)/, '\2\1') + 'ay' #=> "eucay" NOT correct :(
"stupid".gsub(/((qu)*[^aeiou]*)(.*)/, '\2\1') + 'ay' #=> "stay"
"uce".gsub(/([(qu)|[^aeiou]]*)(.*)/, '\2\1') + 'ay' #=> "eucay" # why does just a "u" match?
我認爲它歸結爲是什麼我不知道如何使多個特定的連續字符[]
中的一個選項,我認爲它是[(qu)]
但爲什麼只有u
得到匹配?
將「qu」看作是明膠中的單個輔音...... – rudolph9 2013-03-09 03:53:22
在這種情況下,您需要使用非捕獲組添加「qu」到輔音列表中: 'cons =「(? :曲| [^ AEIOU]) 「'' – nbarraille 2013-03-09 04:07:17
缺點= 」(?:曲| [^ AEIOU])「'確實,因爲它不能在字符串中的字符匹配_not_工作'」 rququrqucebs」 .gsub(/(?: 。曲| [^ AEIOU])+(*)/, '\ 2 \ 1')+ 'AY' #=> 「ebsay」' – rudolph9 2013-03-14 14:53:50