3

我想在空格之间的句子中找到单词。所以直到搜索词前后第一个空格的词

This is anexampleof what I want如果anexampleof我的搜索词是example

我现在有了这个正则表达式"(?:^|\S*\s*)\S*" + searchword + "\S*(?:$|\s*\S*)",但这在开头和结尾给了我一个额外的词。'这是我想要的一个例子'-->返回'是一个例子'

我试图更改正则表达式,但我一点也不擅长。我使用的是 c#。感谢您的帮助。

完整的 C# 代码:

MatchCollection m1 = Regex.Matches(content, @"(?:^|\S*\s*)\S*" + searchword + @"\S*(?:$|\s*\S*)",
                              RegexOptions.IgnoreCase | RegexOptions.Multiline);
4

1 回答 1

3

您可以简单地在最后省略非捕获组:

@"\S*" + searchword + @"\S*";

由于贪婪,您将在每一侧获得尽可能多的非空格字符。

此外,非捕获组的想法不是,它们不包括在匹配中。他们所做的只是不产生子匹配的捕获。如果您想检查是否有某些内容,但不将其包含在匹配中,则需要环视

@"(?<=^|\S*\s*)\S*" + searchword + @"\S*(?=$|\s*\S*)"

然而,在这种情况下,这些外观并没有真正做任何事情,因为\s*\S*对空字符串感到满意(因为*这两个字符都是可选的)。但只是为了进一步参考......如果你想在你的比赛边界做出断言,这不应该是比赛的一部分......环顾四周是要走的路。

于 2012-12-11T11:59:52.747 回答