regex - 如果不是单词的一部分,则 REGEX 查找特定的子字符串
问题描述
我在简化我创建的正则表达式时遇到了麻烦:
@"^sept$|[^a-zA-Z]sept[^a-zA-Z]]|[^a-zA-Z]sept$|^sept[^a-zA-Z]"
该正则表达式必须找到子字符串sept,这不是任何单词的一部分(例如 september ),当应该找到单词时,我会收到几个不同的变体,例如:
九月
9 月 1 日
9月1日
9 月 1 日
九月
... ETC。
在我的模式中,我搜索不是在字母上开始/结束的 sept(所以它不是不同单词的一部分),它可以在字符串的开始/结尾。我检查了功能,它满足了我的需求,但我想知道是否有更好/更简单的方法来编写它。
解决方案
您可以通过对边界条件使用交替来加强这一点:
(^|[^a-zA-Z])sept($|[^a-zA-Z])
但这也可能会匹配 . 的每一侧的一个字符sept
。为避免这种情况,您可以使用环视,假设您的正则表达式支持它们:
(?<=^|[^a-zA-Z])sept(?=$|[^a-zA-Z])
推荐阅读
- javascript - 当我尝试到达路线时变量显示为“未定义”
- angular - 角度:HttpEventType.DownloadProgress 问题
- kubernetes - 端点切片是否适用于 gluster 卷?
- java - 在 JFrame 中心的 JPanel 中创建 JPanel
- reactjs - TypeError:无法读取我的 React 应用程序中未定义的属性“值”
- mysql - 使用准备好的语句显示带有连接表的数据
- kotlin - 如何使用 mockk 对象和 junit.jupiter 测试挂起功能?
- javascript - 即使在导航到反应原生平面列表中的不同屏幕后,也会调用 onViewableItemsChanged
- forecast - fabletools 预测错误,无法合并
使用不同的`week_start` - javascript - 我对在 javascript 中执行 switch 语句感到困惑