积极的前瞻不会在第一次出现时停止

Flm*_*dfj 10 ruby regex

我使用正则表达式

(?<=Charset:\s).+(?=<br\/>) 
Run Code Online (Sandbox Code Playgroud)

在下面的数据(数据中没有换行符,我让它看起来更好)捕获Charset字符串

<div class="box_t">Parameters</div>
<div class="box_c">Charset: i763zLFYKBqVs@nZ8PyO}N9<br/>
Input Base: 23<br/>Solution Base: 19<br/>
Timelimit: 3.1416 seconds<br/></div>
Run Code Online (Sandbox Code Playgroud)

但是,我的比赛结束了

i763zLFYKBqVs@nZ8PyO}N9<br/>
Input Base: 23<br/>
Solution Base: 19<br/>
Timelimit: 3.1416 seconds
Run Code Online (Sandbox Code Playgroud)

似乎在第一次出现后,积极的前瞻并没有停止.有办法让它停止吗?

saw*_*awa 27

一种简单的方法是使用非贪婪的运算符.

(?<=Charset:\s).+?(?=<br\/>)
Run Code Online (Sandbox Code Playgroud)

  • @soey量词如`*`或`+`尽可能地匹配.在它们之后加上"?"会使它们尽可能地缩短. (5认同)