擅长:python、mysql、java
<p>你的<code>\'*</code>部分意味着<code>0 or more matches</code>代表你的单勾,所以<code>.+</code>会抓住最后一个<code>'</code>,因为它是贪婪的。您需要将<code>?</code>添加到<code>(.+)</code>,这样它才不会贪婪。基本上,它意味着抓住一切,直到它遇到<code>'</code>。你知道吗</p>
<p>此模式适用于您:
<code>[A-Za-z]*\(\'*\"*(.+?)\'*\"*\)</code></p>
<p>[更新]</p>
<p>为了回答你下面的问题,我在这里加上它。你知道吗</p>
<p><code>So the ? will make it not greedy up until the next character indicated in the pattern?</code></p>
<p>是的,它基本上将重复操作符更改为不贪婪(懒惰量词),因为默认情况下它们是贪婪的。因此<code>.*?a</code>将匹配所有内容直到第一个<code>a</code>,而<code>.*a</code>将匹配所有内容,包括在字符串中找到的任何<code>a</code>,直到它无法再与字符串匹配为止。因此,如果字符串是<code>aaaaaaaa</code>,正则表达式是<code>.*?a</code>,那么它实际上会匹配每个<code>a</code>。例如,如果对字符串<code>aaaaaaaa</code>上的每个匹配使用<code>.*?a</code>和<code>b</code>替换,您将得到字符串<code>bbbbbbbb</code>。<code>.*a</code>但是在具有相同替换的字符串<code>aaaaaaaa</code>上,将返回单个<code>b</code>。你知道吗</p>
<p>下面的链接解释了不同的量词类型(贪婪、懒惰、所有格):<a href="http://www.rexegg.com/regex-quantifiers.html" rel="nofollow noreferrer">http://www.rexegg.com/regex-quantifiers.html</a></p>