这里是我的代码现在如何选择x
函数括号与正则表达式之间的代码?
public void x() {
if (a== null) {
return;}
String s = "abc";
try {
if (b==1 ) {
c= null;
} else {
d=null;
} } catch (Exception e) {
System.out.println(e);
}
}
结果应该是
if (a== null) {
return;}
String s = "abc";
try {
if (b==1 ) {
c= null;
} else {
d=null;
} } catch (Exception e) {
System.out.println(e); }
答案 0 :(得分:-3)
使用递归正则表达式(?R)
或(?0)
引用整个正则表达式
{([^{}]|(?R))*}
并仅在public void x()
之后匹配,(?1)
引用第一组。
public void x\(\) \K({([^{}]|(?1))*})
以下评论处理双引号字符串
中的大括号{([^{}]|(?R))*}
变为
{(?:"(?:\\.|[^"])*"|[^{}]|(?R))*}
并处理评论
{(?:\/(?:\/.*|\*(?:(?!\*\/)[\s\S])*\*\/)|"(?:\\.|[^"])*"|[^{}]|(?R))*}
对于单引号也类似于双引号会起作用,但先决条件是输入是有效的C因为可以匹配无效的序列C,如'ab'
。
{(?:\/(?:\/.*|\*(?:(?!\*\/)[\s\S])*\*\/)|'(?:\\.|[^'])*'|"(?:\\.|[^"])*"|[^{}]|(?R))*}