ruby - 正则表达式匹配一些单词,不包括带点的字符串
问题描述
匹配"Colorado"
, "Co"
, or的正则表达式是什么"CO"
,不包括包含句点的字符串,例如"Co."
or "co."
?
这:
/\b(Colorado|Co|CO)\b/i
匹配 的两个实例"CO"
。如何排除包含点的匹配项?
这:
\b(?:(?!Co\.)\w)+\b
忽略"Co."
,但我不知道如何将它与允许的关键字结合起来。
解决方案
您可以在之后添加一个否定的前瞻Co
:
/\b(Colorado|Co(?!\.))\b/i
^^^^^^
注意我省略co
了替代,因为您使用的是不区分大小写的i
修饰符,它Co
等于co
.
另一种方法是在第一个之后的组之前添加负前瞻\b
:
/\b(?!Co\.)(Colorado|Co)\b/i
^^^^^^^^
在这里,\b
断言单词边界的位置,然后(?!Co\.)
如果Co.
是当前位置右侧的文本,则匹配失败,并且(Colorado|Co)\b
匹配整个单词Colorado
or Co
。
请注意,如果您手动编写模式,您可能会进一步缩短模式,例如
/\b(?!Co\.)Co(?:lorado)?\b/i
推荐阅读
- javascript - 如何在 Javascript 中返回具有特定条件的对象数组?
- css - 无论我出于某种原因尝试什么,都无法让 SCSS/CSS 在 React App 中呈现
- python - 类型错误:dayofweek() 缺少 2 个必需的位置参数:“days”和“yr”
- java - Apache httpclient:块编码消息正文的过早结束:预期关闭块
- jenkins - 詹金斯 v1.563 旧版
- linux - 需要知道 bash 脚本中 disown 命令的目的
- javascript - 在此处粘贴 dom 标记以进行缩放
- typescript - Vue 组件中缺少 this 的属性
- angular - “TypeError:control.registerOnChange 不是函数”动态更改归档表单 FormControl 到 FormArray
- node.js - 如何使用 child_process.exec(command[, options][, callback]) 在 Node.js 应用程序中编译带有一些用户输入的 ac 程序