选择字符串中的上一个和下一个单词

Mag*_*dal 5 c# regex string

我在C#中循环了很多像这样的字符串:

"看起来,对遥控器有好处是一回事,对生活有好处,那就是别的东西."

在这些字符串中,我有一个选定的单词,由前一个函数的索引确定,就像上面例子中的第二个"好"一样.

" 对于遥控器来说,好看(< - 不是这一个)对于生活来说是好事(< - 这一个),那是另一回事."

我想找到我所选单词周围的单词.在上面的情况下,事情反对.

"看起来,对遥控器有好处是一回事,生活有好处,那就是别的东西."

我已尝试将字符串.split()与正则表达式的不同方法分开,但我找不到实现此目的的好方法.我有机会获得这个词,它位于哪里的字符串在上面的例子中,索引(41以上).

巨额奖金是否会忽略标点符号和逗号,这样在上面的例子中,我的理论函数将返回只针对因为之间有一个逗号的事情.

有没有一种简单的方法来实现这一目标?任何帮助赞赏.

And*_*ark 5

包括"巨额奖金":

string text = "Look, good against remotes is one thing, good against the living, that’s something else.";
string word = "good";
int index = 41;

string before = Regex.Match(text.Substring(0, index), @"(\w*)\s*$").Groups[1].Value;
string after = Regex.Match(text.Substring(index + word.Length), @"^\s*(\w*)").Groups[1].Value;
Run Code Online (Sandbox Code Playgroud)

在这种情况下before,由于逗号将是一个空字符串,并将after"反对".

说明:获取时before,第一步是抓住字符串的第一部分,直到目标字之前,text.Substring(0, index)执行此操作.然后我们使用正则表达式(\w*)\s*$匹配并捕获一个单词(\w*),后跟\s*字符串末尾的任意数量的空格($).第一个捕获组的内容是我们想要的单词,如果我们无法匹配正则表达式仍将匹配的单词,但它将匹配空字符串或仅空格,并且第一个捕获组将包含空字符串.

获取的逻辑after几乎相同,除了text.Substring(index + word.Length)用于获取目标字之后的其余字符串.正则表达式^\s*(\w*)除了它锚定到与字符串的开头是类似^\s*来之前的\w*,因为我们需要去掉空格对单词的前端.