Skip to main content
 首页 » 编程设计

c#之正则表达式匹配部分或整个单词

2024年02月05日30oomusou

我正在尝试找出一个正则表达式,它可以匹配整个单词或单词的一部分(预定义的长度,例如前 4 个字符)。

例如,如果我尝试匹配单词 between 并且我的偏移量设置为 4,则

between betwee betwe betw

是匹配,但不是

bet betweenx bet12 betw123 beta

我在 regex101 中创建了一个示例,我正在尝试(没有运气)积极前瞻 (?=) 和非单词边界 \B 的组合。

我找到了一个类似的 question在其接受的 answer 中提出了一个词. 据我所知,它以某种方式覆盖匹配器,根据单词和偏移量运行所有可能的正则表达式。

我的代码必须用 C# 编写,所以我正在尝试转换上述代码。 如我所见,Regex.Replace(我假设 Regex.Match 也)可以接受委托(delegate)来覆盖默认功能,但我不能它有效。

请您参考如下方法:

您可以使用前 4 个字符,并将其余字符设为可选。
然后将它们包裹在单词边界和括号中。

所以在“介于”的情况下,它将是

@"\b(betw)(?:(e|ee|een)?)\b" 

实现该目标的代码是:

public string createRegex(string word, int count) 
{ 
    var mandatory = word.Substring(0, count); 
    var optional = "(" + String.Join("|", Enumerable.Range(1, count - 1).Select(i => word.Substring(count, i))) + ")?"; 
    var regex = @"\b(" + mandatory + ")(?:" + optional + @")\b"; 
    return regex; 
}