【问题标题】:Java Eclipse Regex Multiline SearchJava Eclipse 正则表达式多行搜索
【发布时间】:2015-11-12 17:42:11
【问题描述】:

我们最近将一个大型项目从 Swing 转换为 JavaFX。编写了一个转换程序来自动化其中的一些过程,这节省了很多时间,但也给我们留下了一些问题。其中之一是我们有一些从未调用过showAndWait() 的警报。我希望将 Regex 放在一起,以查找我们项目中满足以下条件的所有实例:

new Alert(

开头

");

结尾

并且可能包含 0 个或多个换行符以及括号之间的任何字符。

我想出了这个:new Alert\(*.*\R*.*\"\)\;

但它似乎也包括以showAndWait() 调用结尾的结果。

例子:

new Alert(AlertType.INFORMATION, "This alert should not be matched").showAndWait();

new Alert(AlertType.INFORMATION, "This alert should be matched");

谢谢

【问题讨论】:

  • 您能否提供一个错误匹配的警报示例?
  • 已添加到问题中。谢谢。

标签: java regex eclipse swing replace


【解决方案1】:

您可以使用 tempered greedy token 解决方案:

\bnew\s+Alert\((?:(?!\.showAndWait\(\);\s*$)[\s\S])*"\);

请参阅regex demo 和下面的屏幕截图:

模式详情

  • \bnew - 一个完整的词new
  • \s+ - 1 个或多个空格
  • Alert\( - 文字字符序列 Alert(
  • (?:(?!\.showAndWait\(\);\s*$)[\s\S])* - 与不是 .showAndWait(); 的起始字符的任何字符 ([\s\S]) 匹配的缓和贪婪令牌 + 零个或多个空格+行尾序列
  • "\); - 文字字符序列 ");

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-05-18
  • 2011-02-21
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
相关资源
最近更新 更多