REGEX找到特定的子字符串,如果不是单词的一部分

时间:2018-05-25 05:41:09

标签: regex string pattern-matching string-matching

我在简化我创建的正则表达式方面遇到了麻烦:

@"^sept$|[^a-zA-Z]sept[^a-zA-Z]]|[^a-zA-Z]sept$|^sept[^a-zA-Z]"

正则表达式必须找到子串 sept ,这不是任何单词的一部分(如9月),我应该在找到单词时收到几个不同的变体,如:

七重峰

1sept

sept1

1sept1

七重峰

......等等。

在我的patthern中,我搜索了不在字母上开头/结尾的句子(所以它不是不同单词的一部分),它可以在字符串的开头/结尾。我检查了功能,它满足了我的需求,但我想知道是否有更好/更简单的方法来编写它。

2 个答案:

答案 0 :(得分:1)

您可以通过使用边界条件的替换来加强它:

(^|[^a-zA-Z])sept($|[^a-zA-Z])

但是这也可能匹配sept每一侧的一个角色。为避免这种情况,您可以使用外观,假设您的正则表达式支持它们:

(?<=^|[^a-zA-Z])sept(?=$|[^a-zA-Z])

答案 1 :(得分:0)

[a-zA-z0-9]*(sept|SEPT)[a-zA-z0-9]*

尝试以上正则表达式。