我正在尝试构造一个提取结构名称的正则表达式,尽管我没有找到它的任何内容。我正在完成的步骤是:
/
public struct ABC{
int a;
int b;
}
public struct DEF {
ulong d;
string e;
}
Regex:
public struct ([A-Za-z]+)[{|\r|\n|.]+}
Should give:
ABC
DEF
为什么正则表达式找不到任何东西?
答案 0 :(得分:2)
因为正文包含的内容超过[{|\r|\n|.]+
可以匹配的内容。
如果您只想要名字,可以使用:
public struct (\w+)\s*{
[{|\r|\n|.]+
与[{\r\n.|]+
相同(括号是字符类,而不是组),您可能需要[^}]+
。
答案 1 :(得分:1)
要仅提取'ABC'部分,您需要在正则表达式中使用正面lookeahead。 一个简单的解决方案是:
(?<=(public struct ))[\w]+
因此,根据您给出的示例,它将仅提取:
编辑: 以下是与工作示例的链接: