我正在编写代码格式化程序,我需要一些帮助。我必须找到代码块,我想使用正则表达式。我需要格式化的代码看起来基本上是这样的:
KEYWORD name {
word
word
...
}
我可以使用以下表达式找到以{和end with}开头的块:
[{](.*?)[}]
但我不知道如何将"KEYWORD name"
部分添加到表达式中。两者都是自定义字符串,可以包含除;
,{
和}
之外的任何字符。
另一个问题是我的代码块可以嵌套。我不知道如何添加该功能。
答案 0 :(得分:3)
你可以这样做:
KEYWORD name {.*?}
由于您希望.
也匹配换行符,因此您必须使用多行模式。
由于KEYWORD
和name
都是包含除;
,
{
和}
之外的任何字符的任意字符串:
[^;,{}]+\s+[^;,{}]+\s*{.*?}
答案 1 :(得分:2)
(。+?)\ S +(。+?)\ S + {(。*?)}
这是:任何不是空格的东西,后跟一个或多个空格字符,后跟任何不是空格,一个或多个空格字符和代码块的东西。
如果KEYWORD只能包含大写字母和name
,让我们说所有的字母,数字和下划线,它应该是这样的:
([A-Z]+?)\s+([A-Za-z0-9_+?)\s+\{(.*?)\}
请注意,如果您的代码块可以嵌套,那么这个正则表达式会遇到问题,因为它会匹配第一个{以及第一个}。