Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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#_Regex - Fatal编程技术网

C# 我怎样才能阻止这个正则表达式变得贪婪?

C# 我怎样才能阻止这个正则表达式变得贪婪?,c#,regex,C#,Regex,当前,此正则表达式返回一个匹配项: 世界上最好的语言 世界上最快的语言 如何让它返回两个匹配项: 最好的语言 最快的语言 在*之后添加?在*之后添加?,这将符合您的要求 /the (?:best|fastest) language/g 这将符合你的要求 /the (?:best|fastest) language/g 试试这个: \bthe\b(?:(?!\bthe\b).)*\blanguage\b 它使用一个否定的前瞻断言来要求在匹配的“the”和“language”之间不再看到“th

当前,此正则表达式返回一个匹配项:

世界上最好的语言 世界上最快的语言

如何让它返回两个匹配项:

最好的语言

最快的语言


*
之后添加
*
之后添加
,这将符合您的要求

/the (?:best|fastest) language/g

这将符合你的要求

/the (?:best|fastest) language/g
试试这个:

\bthe\b(?:(?!\bthe\b).)*\blanguage\b
它使用一个否定的前瞻断言来要求在匹配的“the”和“language”之间不再看到“the”。

尝试以下操作:

\bthe\b(?:(?!\bthe\b).)*\blanguage\b

它使用了一个否定的前瞻性断言,要求在匹配的“the”和“language”之间不再看到“the”。

谢谢,这几乎奏效了:它得到了“最好的语言”和“世界上最快的语言”。你能解释一下为什么要添加吗?我明白它的作用是什么?意思是“重复零次或一次”,在解决问题时不会遇到这种情况this@Edward
+
之后,
*
{m,n}
使它们非贪婪-匹配可能的最小字符串。第二个匹配是世界上最快的语言,这是你的
*?
不可避免的-更具体一些,如
[^]*?
匹配任何非空格字符或类似的东西使用
[^]*?
返回0个匹配,但这似乎不是正确的方法,因为我想确定的不是字符的类型(空格/非空格),而是第一个单词“the”与第二个单词“language”之间最接近的一种,这是一种什么样的模式呢?谢谢,这几乎起作用了:它得到了“最好的语言”和“世界上最快的语言”你能解释一下为什么要加吗?我明白它的作用是什么?意思是“重复零次或一次”,在解决问题时不会遇到这种情况this@Edward
+
之后,
*
{m,n}
使它们非贪婪-匹配可能的最小字符串。第二个匹配是世界上最快的语言,这是你的
*?
不可避免的-更具体一些,如
[^]*?
匹配任何非空格字符或类似的东西使用
[^]*?
返回0个匹配,但这似乎不是正确的方法,因为我想确定的不是字符类型(空格/非空格),而是第一个单词“the”与第二个单词“language”最接近的一种,这是一种模式吗?这是试图用更多的正则表达式答案来填充它还是拒绝阅读文档,永远不会有足够多的不同的正则表达式示例来帮助人们理解正则表达式语法的每个部分之间的关系和影响。这是试图用更多的正则表达式答案来填充,还是拒绝阅读文档,永远不会有足够多不同的正则表达式示例来帮助人们理解正则表达式语法的每个部分之间的关系和影响