如何在Regexp中找到第一个匹配项?

时间:2017-08-03 02:57:44

标签: javascript regex

我理解'?'让搜索变得懒惰......我觉得以下内容应该有效:

/<w:body>(.*)(<w:r>?)/igm

要搜索的字符串:

<w:body><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:pPr><w:rPr><w:b/></w:rPr></w:pPr><w:r><w:rPr><w:b/></w:rPr><w:t>This is going to be</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:r><w:rPr><w:b/></w:rPr><w:t>More</w:t></w:r><w:r><w:t xml:space="preserve"> complicate </w:t></w:r><w:r><w:rPr><w:i/></w:rPr><w:t>text</w:t></w:r><w:r><w:t xml:space="preserve"> with</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:t>Bullets</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:r><w:t>And</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:t>Numbered</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:t>Lists</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRPr="00EA0565" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:r><w:t xml:space="preserve">With </w:t></w:r><w:r w:rsidRPr="002575C3"><w:rPr><w:sz w:val="36"/></w:rPr><w:t xml:space="preserve">BIG </w:t></w:r><w:r><w:t>fonts and weird charac</w:t></w:r><w:r w:rsidRPr="002575C3"><w:rPr><w:vertAlign w:val="superscript"/></w:rPr><w:t>ters</w:t></w:r><w:r><w:t>.</w:t></w:r></w:p><w:p w:rsidR="00000000" w:rsidRDefault="00584C40"/><w:sectPr w:rsidR="00000000" w:rsidSect="00B46591"><w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/><w:docGrid w:linePitch="360"/></w:sectPr></w:body></w:document>

期望的结果:

<w:body><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:pPr><w:rPr><w:b/></w:rPr></w:pPr><w:r>

实际结果(使用https://regex101.com/r/uB1lQ8/1和regexpal.com): (它仍然是最后一个与第一个停止......)

<w:body><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:pPr><w:rPr><w:b/></w:rPr></w:pPr><w:r><w:rPr><w:b/></w:rPr><w:t>This is going to be</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:r><w:rPr><w:b/></w:rPr><w:t>More</w:t></w:r><w:r><w:t xml:space="preserve"> complicate </w:t></w:r><w:r><w:rPr><w:i/></w:rPr><w:t>text</w:t></w:r><w:r><w:t xml:space="preserve"> with</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:t>Bullets</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:r><w:t>And</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:t>Numbered</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:t>Lists</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRPr="00EA0565" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:r><w:t xml:space="preserve">With </w:t></w:r><w:r w:rsidRPr="002575C3"><w:rPr><w:sz w:val="36"/></w:rPr><w:t xml:space="preserve">BIG </w:t></w:r><w:r><w:t>fonts and weird charac</w:t></w:r><w:r w:rsidRPr="002575C3"><w:rPr><w:vertAlign w:val="superscript"/></w:rPr><w:t>ters</w:t></w:r><w:r>

感谢您提供任何专家帮助!

1 个答案:

答案 0 :(得分:0)

(.*)组懒惰:/<w:body>(.*?)<w:r>/igm

&#13;
&#13;
const reg = /<w:body>(.*?)<w:r>/igm;
const str = `<w:body><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:pPr><w:rPr><w:b/></w:rPr></w:pPr><w:r><w:rPr><w:b/></w:rPr><w:t>This is going to be</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:r><w:rPr><w:b/></w:rPr><w:t>More</w:t></w:r><w:r><w:t xml:space="preserve"> complicate </w:t></w:r><w:r><w:rPr><w:i/></w:rPr><w:t>text</w:t></w:r><w:r><w:t xml:space="preserve"> with</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="1"/></w:numPr></w:pPr><w:r><w:t>Bullets</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:r><w:t>And</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:t>Numbered</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:t>Lists</w:t></w:r></w:p><w:p w:rsidR="00584C40" w:rsidRPr="00EA0565" w:rsidRDefault="00584C40" w:rsidP="00584C40"><w:r><w:t xml:space="preserve">With </w:t></w:r><w:r w:rsidRPr="002575C3"><w:rPr><w:sz w:val="36"/></w:rPr><w:t xml:space="preserve">BIG </w:t></w:r><w:r><w:t>fonts and weird charac</w:t></w:r><w:r w:rsidRPr="002575C3"><w:rPr><w:vertAlign w:val="superscript"/></w:rPr><w:t>ters</w:t></w:r><w:r><w:t>.</w:t></w:r></w:p><w:p w:rsidR="00000000" w:rsidRDefault="00584C40"/><w:sectPr w:rsidR="00000000" w:rsidSect="00B46591"><w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/><w:docGrid w:linePitch="360"/></w:sectPr></w:body></w:document>`;

console.info(str.match(reg)[0]);
&#13;
&#13;
&#13;