java - 用于查找嵌套代码块的正则表达式

标签 java regex string

我正在编写一个代码格式化程序,我需要一些帮助。我必须找到代码块并且我想使用正则表达式。我需要格式化的代码基本上是这样的:

KEYWORD name {
    word
    word
    ...
}

我能够使用以下表达式找到以 { 开头并以 } 结尾的 block :

[{](.*?)[}]

但我不知道如何将 "KEYWORD name" 部分添加到表达式中。两者都是自定义字符串,可以包含除 ;{} 之外的任何字符。

另一个问题是我的代码块可以嵌套。我不知道如何添加该功能。

最佳答案

你可以这样做:

KEYWORD name {.*?}

由于您希望 . 也匹配换行符,因此您必须使用多行模式。

因为KEYWORDname都是任意字符串,可以包含除;之外的任何字符 , {}:

[^;,{}]+\s+[^;,{}]+\s*{.*?}

关于java - 用于查找嵌套代码块的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4223601/

相关文章:

java - 鼠标点击坐标始终为0

regex - 使用 sed 更改 CSV 分隔符

c# - 如何使用正则表达式提取字符串的IP

ruby - 如何在 Ruby 中 %w[text] 不包含\n它换行的地方

c++ - 读取未知长度的数字

java - UIThread 中的 HTTP POST 请求

java - 如何判断虚拟机是在服务器模式下运行还是在客户端模式下运行?

c# - 如何从字符串中去除字母?

c - 如何查找表达式的哪个索引与正则表达式匹配

java - 编写一个程序,显示从 100 到 1000 的所有数字,每行十个,可以被 5 和 6 整除