即使使用 *,正则表达式也不会 return 最小化结果?

The regular expression doesn't return minimize result even with *?

这是我的正则表达式。 <form[\s][\s\S]*action="[\s\S]*?"。下面是整个内容字符串。

<form role="search" method="get" name="search" action="/job/ice-cream-release/search/" abc d ="" </form>abcd <parameters:<form method="post" autocomplete="off" name="parameters" action="build?delay=0sec"><div width="100%" class="parameters"><tbody>

我已经在正则表达式中使用了*?,我假设return结果应该在下面,这是最小化结果。

<form role="search" method="get" name="search" action="/job/ice-cream-release/search/"

但实际结果是

<form role="search" method="get" name="search" action="/job/ice-cream-release/search/" abc d ="" </form>abcd <parameters:<form method="post" autocomplete="off" name="parameters" action="build?delay=0sec"

这是怎么发生的?谢谢。

您的输入字符串中有两个 action 个字符序列。
这就是 first * 扩展超过第一个 action 的原因。 (到第二个和最后一个 action

通过添加一个 ? 也制作那个 non-greedy,以获得所需的结果:

<form[\s][\s\S]*?action="[\s\S]*?"