java正则表达式查找嵌套代码块
我正在写一个代码格式化程序,我需要一些帮助。我必须找到代码块,我想使用正则表达式。我需要格式化的代码基本上如下所示:
KEYWORD name {
word
word
...
}
我可以用这个表达式找到以{开头,以}结尾的块:
[{](.*?)[}]
但我不知道如何将"KEYWORD name"
部分添加到表达式中。它们都是自定义字符串,可以包含除;
、{
和}
之外的任何字符
另一个问题是我的代码块可以嵌套。我不知道如何添加该功能
# 1 楼答案
你可以这样做:
由于您希望
.
也匹配换行符,因此必须使用多行模式由于}和
KEYWORD
和name
都是任意字符串,可以包含除;
,
{}
之外的任何字符:# 2 楼答案
(.+?)\s+(.+?)\s+{(.*?}
这是:任何不是空格的字符,后跟一个或多个空格字符,后跟任何不是空格的字符,一个或多个空格字符,以及代码块
如果关键字只能包含大写字母和
name
,比如所有字母、数字和下划线,它应该是这样的:请注意,如果您的代码块可以嵌套,那么这个正则表达式就会有问题,因为它会同时匹配第一个{和第一个}