Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在字符串中的特定短语之前查找单词_C#_.net_Regex_String_Linq - Fatal编程技术网

C# 在字符串中的特定短语之前查找单词

C# 在字符串中的特定短语之前查找单词,c#,.net,regex,string,linq,C#,.net,Regex,String,Linq,在所有这些情况下,我都试图找到位于特定短语前面的左单词,除了输入3: string input = "I think that green bike is better than the red bike"; // input 1 string input = "I think that green bike is better"; // input 2 string input = "is better than the red on

在所有这些情况下,我都试图找到位于特定短语
前面的左单词,除了输入3

    string input = "I think that green bike is better than the red bike"; // input 1
    string input = "I think that green bike is better";                   // input 2
    string input = "is better than the red one";                          // input 3
    string input = "bike is better";                                      // input 4
我尝试了三种方法,但没有一种方法不能给我想要的结果,即只找到左边的单词,在这种情况下,在搜索短语之前是单词
“bike”
“更好”
,在所有三种输入情况下,除了输入3和不搜索短语本身:

1)

所以
1)
的结果是短语
的左右单词都更好。
2)
的结果是
,然后
后面的单词更好。
3)
的结果同样是前后两个单词,这正是我可以使用的,但这个解决方案的问题在第二个结果中显示出来

使用输入2:
“我认为绿色自行车更好”
结果是:

1) bike is better
1)
的结果是一个单词
“bike”
,位于短语
“更好”
之前,但搜索短语
“更好”
2)
的结果不算什么,因为它查找
后面的单词“更好”
,所以它是正确的。而
3)
的结果也是无效的,即使单词
“bike”
“is better”
之前存在,如果
“is better”
之后的单词不存在,并且它是字符串中的最后一个单词

使用输入3:
“比红色的好”
结果是:

1) bike is better than
2) than
3) before: bike
3) after: than
1) is better than
2) than
1)
的结果是在
之后有一个存在的右单词“更好”
,因为前面的左单词不存在,并且再次包含搜索短语
“更好”
。结果
1)
是一个单词
,那么
之后的“
更好”

并使用输入4得出结果:
“自行车更好”

试试这个:

\w+(?=\sis better)
除了第三次输入外,它将与自行车匹配。

原始方式
(\w+)更好。
第1组:将为您提供

1) bike is better
1) is better than
2) than
1) bike is better
\w+(?=\sis better)