我只想在模式之后的下一个字母是给定的一个字母时替换Ruby中的模式.
示例:将"αυ"替换为"av"仅在"αυ"之后的下一个字母为以下之一时:α|γ|δ|λ|μ|ν|ρ|σμ|ω
这个代码当然不会起作用,我想我需要使用正则表达式更复杂来匹配模式之后的一个字母.
string.gsub!("??", "av") if string =~ /?|?|?|?|?|?|?|??|?/
Run Code Online (Sandbox Code Playgroud)
谢谢你的任何建议.
使用积极的前瞻:
string.gsub!(/??(?=?|?|?|?|?|?|?|??|?)/, "av")
Run Code Online (Sandbox Code Playgroud)
请参阅Rubular演示
细节
??- ??子串(?=?|?|?|?|?|?|?|??|?) - 一个积极的前瞻,需要在其中存在一个替代品,同时在匹配值内排除替代,即它将留在结果字符串中).您也可以将单字符替换"收缩"为字符类
/??(?=[????????]|??)/
^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
请参阅另一个Rubular演示.??不能放在一个字符类中,因为它包含2个字符.
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |