正则表达式在日食中进行多行搜索

时间:2018-08-14 06:13:39

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

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

输入:

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

输出应为:

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

字符串okay1和okay2可以是任何东西。他们在这里代表评论。我尝试这样做是行不通的。

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

这也与我不想要的第一个评论(okay1)相匹配。我对正则表达式很熟悉,但这并不简单。将不胜感激。谢谢。

1 个答案:

答案 0 :(得分: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;