繁体   English   中英

JS RegEx匹配两个字符串之间但没有两个字符串的所有字符(包括换行符)?

[英]JS RegEx to match all characters (including newline) between two strings but without the two strings?

示例文本:

<div id="not-wanted">
no no 
no 
</div>
<div id="wanted">I want 
only this 
text
</div> no no no
no no
<div id="not-wanted">
no no no 
</div>
<div id="wanted">no no
no no</div>
<div id="wanted">
no no     
</div>

应该交付:

I want 
only this 
text

或更好:

I want only this text

不幸的是,我的解决方案还捕获了2个定界字符串:

$('#put').append(/<div id="wanted">[^<>]*<\/div>/.exec(strg)[0]);

==>

<div id="wanted">I want 
only this 
text
</div>

在线示例

http://regex101.com/r/rF7jR9

如果还有\\n\\r重新发送,Java Script的正则表达式可以在分隔字符串之间传递字符。 如果从传递的字符串中删除\\n\\r ,那就太好了。 RegExpr应该可以快速工作。

现在我知道如何:

$('#put').append(/<div id="wanted">([\s\S]*?)<\/div>/.exec(strg)[1]);

谢谢Jerry的(小组)提示。 [\\s\\S]代表每个角色。 *? 在第一次找到<\\/div>后停止。

您可以使用捕获组并忽略完整匹配?

$('#put').append(/<div id="wanted">([^<>]*)<\/div>/.exec(strg)[1]);
                                   ^------^                    ^

( ... )是一个捕获组,因为它是正则表达式中的第一个,它到达第一个捕获组,因此接近结束时的1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM