【问题标题】:regex to do multi line search in eclipse正则表达式在 Eclipse 中进行多行搜索
【发布时间】:2018-08-14 06:13:38
【问题描述】:

我需要一个正则表达式来匹配包含“private final VARIABLE”的行之前的注释。

输入:

/**
*okay1
*/
menu
/**
*  okay2.
*/
private final VARIABLE;

输出应该是:

/**
*  okay2.
*/
private final VARIABLE;

字符串 OK1 和 OK2 可以是任何东西。他们在这里代表 cmets。我试过这样做,但不起作用。

 ((\/\*\*[\S\s]*\*\/){1})[\s]*(private\s*final\s*VARIABLE\;)

这也符合我不想要的第一条评论 (okay1)。我熟悉正则表达式,但这并不简单。将不胜感激任何帮助。谢谢。

【问题讨论】:

    标签: regex unix regex-negation regex-lookarounds regex-greedy


    【解决方案1】:

    你可以使用像这样的正则表达式

    /\*+[^*]*\*+(?:[^/*][^*]*\*+)*/\s*(private\s+final\s+VARIABLE;)
    

    online demo

    详情

    • /\*+ - 匹配评论开头,/* 和后面的任何 0+ 星号
    • [^*]*\*+ - 匹配除 * 之外的 0+ 个字符,后跟 1+ 个文字 *
    • (?:[^/*][^*]*\*+)* - 0+ 个序列:
      • [^/*][^*]*\*+ - 不是 /*(与 [^/*] 匹配)后跟 0+ 个非星号字符 ([^*]*) 后跟 1+ 个星号 (\*+)
    • / - 关闭/
    • \s* - 0+ 个空格
    • (private\s+final\s+VARIABLE;) - 第 1 组:private,1+ 个空格,final,1+ 个空格,VARIABLE;

    【讨论】:

    • 如何在评论开始前添加空格或制表符/**
    • @Zack \s* 将匹配任何 0 个或多个空白字符。
    • 我只想替换同一行注释前面的空格。如果我使用 \s+,它会转到前面的行,直到它匹配所有空格和 \n
    • @Zack 所以,你只想匹配水平空格。您有很多选择:\h*[\p{Zs}\t]*[^\S\r\n]*[ \t]* 等。选择最适合您的。
    猜你喜欢
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    相关资源
    最近更新 更多