Eclipse-如何在正则表达式中将多行作为一个组?

问题描述 投票:0回答:1

我正在研究遗留代码。此问题仅限于Eclipse IDE(尤其是Eclipse正则表达式)。一些代码不再有效,因此我希望立即编辑这些语句。

这是JSP中的语句示例。

<%! 
    int score = 100;
%>
<script for=window event=onload>
    doSomething();
    console.log("Your point is <%= score %>")
</script>

我想做的就是这样。

  • 脚本标记之间的grep内容
  • 生成新的脚本标记并将内容放入特定语句内

这是我为此所做的

  • 搜索(默认,Ctrl + H)(<script).*(event).*(onload)(.*)(>)(.*)(</script>)
  • [如果有效(不幸的是暂时不起作用),将显示第6组号码
  • <script> window.addEventListener('load', function(){ $6 }, false); </script>替换正则表达式

所以我想要的最终形式是这样的。

<script>
    window.addEventListener('load', function(){
        doSomething();
        console.log("Your point is <%= score %>")
    }, false);
</script>

我试图将(?m)放在搜索正则表达式的最前面,但是我没有用。

如何在Eclipse中使用正则表达式将多行内容作为一个组来获取?

感谢

regex eclipse multiline
1个回答
0
投票

在您的正则表达式中,将所有.替换为[\s\S]以处理多行内容,并将所有*(贪婪)替换为*?(非贪婪)以仅匹配一个<script>元素,而不是第一个到最后一个<script>元素(如果文件包含多个<script>元素):

(<script)[\s\S]*?(event)[\s\S]*?(onload)([\s\S]*?)(>)([\s\S]*?)(</script>)
© www.soinside.com 2019 - 2024. All rights reserved.