如何编写Ruby正则精确匹配"and/or"并更新现有分割正则?
解决方案
要让正则同时支持匹配空格包裹的and/or(不区分大小写)以及and/or,只需在原有备选分支前添加and/or的匹配规则即可,注意要优先匹配完整的and/or避免被拆分。
更新后的正则表达式
使用传统斜杠分隔符(需转义/):
/ (?i)(?:and\/or|and|or) /
或者用%r分隔符(无需转义/,更简洁):
%r{ (?i)(?:and/or|and|or) }
代码示例
# 测试"and/or"场景 name = "Elvin and/or Jafarli" name.split(/ (?i)(?:and\/or|and|or) /) # => ["Elvin", "Jafarli"] # 测试原有"and"场景 name2 = "Elvin AND Jafarli" name2.split(/ (?i)(?:and\/or|and|or) /) # => ["Elvin", "Jafarli"] # 测试原有"or"场景 name3 = "Elvin or Jafarli" name3.split(/ (?i)(?:and\/or|and|or) /) # => ["Elvin", "Jafarli"]
正则说明
(?i):保持原有不区分大小写的匹配特性,兼容And/Or、AND/OR等大小写变体。(?:and\/or|and|or):非捕获分组,优先匹配完整的and/or,再匹配单独的and或or,避免把and/or拆分成and导致错误分割。- 前后空格:确保只匹配被空格包裹的分隔符,避免误匹配字符串内部的子串(比如
hand里的and)。
内容的提问来源于stack exchange,提问作者Elvin Jafali
相关产品推荐
相关产品推荐

