如何使用gsub移除字符串中特殊字符及其周边的字符?
用Ruby gsub搞定*及周边内容的移除需求
直接上可行的代码方案:
# 假设myString是包含目标字符串的数组 myString.each do |str| cleaned_str = str.gsub(/\s?[\w-]*\*[\w-]*\s?/, '').strip puts "\"#{cleaned_str}\"" end
正则逻辑拆解
这个正则专门匹配要删掉的片段:
\s?:处理*前后可能带的单个空格(比如示例里*bb-bb前面的空格)[\w-]*:匹配任意数量的字母、数字、下划线或者连字符——覆盖题目说的"周边的字母数字",连字符也包含进去,毕竟像cc-cc*这种整段都要删除\*:精准匹配目标特殊字符*(加转义是因为*在正则里是特殊元字符)- 整个表达式会把
*和它前后关联的字母数字、连字符,还有可能的前后空格一起匹配到,替换为空字符串后用strip处理可能残留的首尾空格
对应示例测试
拿题目里的输入逐一验证:
- 输入
"a-a b-b cc-cc*"→ 匹配到cc-cc*,替换后得到"a-a b-b" - 输入
"1-1 *bb-bb"→ 匹配到*bb-bb,替换后得到"1-1" - 输入
"aa-bb*"→ 匹配到整串aa-bb*,替换后得到"" - 输入
"aa-aa *3b-3b"→ 匹配到*3b-3b,替换后得到"aa-aa"
完全符合预期输出。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

