1

我正在尝试构建一个可以提取结构名称的正则表达式,尽管我没有找到任何东西。我正在执行的步骤是:

  1. 查找字符串“公共结构”。
  2. 找到所有字符 AZ az 一次或多次并将它们分组。
  3. 然后查找换行符、回车符或任何其他字符一次或多次(我认为这将解释左大括号和任何空格的可能性)。
  4. 最后找一个}

/

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

为什么正则表达式没有找到任何东西?

4

2 回答 2

2

因为身体包含的东西比可以匹配的要多[{|\r|\n|.]+

如果您只想要名称,您可以使用:

public struct (\w+)\s*{

[{|\r|\n|.]+[{\r\n.|]+(括号是字符类,而不是组)相同,您可能的意思是[^}]+.

于 2012-06-19T09:26:05.813 回答
1

要仅提取“ABC”部分,您需要在正则表达式中进行积极的前瞻。一个简单的解决方案是:

(?<=(public struct ))[\w]+

因此,对于您给定的示例,它将仅提取:

  • 美国广播公司
  • 国防军

编辑:这是工作示例的链接:

http://gskinner.com/RegExr/?319vk

于 2012-06-19T09:26:23.410 回答