我需要一个正则表达式来仅匹配包含“ 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)相匹配。我对正则表达式很熟悉,但这并不简单。将不胜感激。谢谢。
答案 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;
。