非捕获组不贪心吗?

Liu*_*ang 5 regex

我想删除第一个之后的所有内容\xe2\x80\x93

\n\n

样本:

\n\n
Yes \xe2\x80\x93 No \xe2\x80\x93 No \xe2\x80\x93 No\nYes \xe2\x80\x93 No \xe2\x80\x93 No & No \xe2\x80\x93 No\nYes Yes \xe2\x80\x93 No & No \xe2\x80\x93 No\nYes \xe2\x80\x93 No \xe2\x80\x93 No & No \nYes \xe2\x80\x93 No\nYes \xe2\x80\x93 No \xe2\x80\x93 No\n
Run Code Online (Sandbox Code Playgroud)\n\n

我正在使用的正则表达式:

\n\n
/(.+) (?:\xe2\x80\x93 .+)/\n
Run Code Online (Sandbox Code Playgroud)\n\n

匹配:

\n\n
`Yes \xe2\x80\x93 No \xe2\x80\x93 No`\n`Yes \xe2\x80\x93 No \xe2\x80\x93 No & No`\n`Yes Yes \xe2\x80\x93 No & No`\n`Yes \xe2\x80\x93 No`\n`Yes`\n`Yes \xe2\x80\x93 No`\n
Run Code Online (Sandbox Code Playgroud)\n\n

看起来非捕获组是懒惰而不是贪婪?

\n\n

我想要的结果是:

\n\n
`Yes`\n`Yes`\n`Yes Yes`\n`Yes`\n`Yes`\n`Yes`\n
Run Code Online (Sandbox Code Playgroud)\n

vks*_*vks 3

(.+?) (?:\xe2\x80\x93 .+)\n
Run Code Online (Sandbox Code Playgroud)\n\n

这将给出所需的结果。您的正则表达式(.+) (?:\xe2\x80\x93 .+)不正确,因为.+它将在停止之前尝试匹配尽可能多的字符,因此它将在最后停止-。相反,用.+?让它变得懒惰。

\n\n

http://regex101.com/r/hS3dT7/3

\n