我在文件中有这个枚举:
public enum IdentityState
{
[EnumMember]
New = 0,
[EnumMember]
Normal = 1,
[EnumMember]
Disabled = 2
}
{ some other data... }
并且只想匹配此枚举的主体({}之间), 我想要的匹配结果是:
{
[EnumMember]
New = 0,
[EnumMember]
Normal = 1,
[EnumMember]
Disabled = 2
}
我像这样制作正则表达式:
public enum.*\w.*(?<enumBody>[\S|\s|]+\}{1})
但结果如下:
{
[EnumMember]
New = 0,
[EnumMember]
Normal = 1,
[EnumMember]
Disabled = 2
}
{ some other data... }
这不是我所期望的,因为它还包括我不想要的下一个{ some other data }
字符串。我不知道如何在第一次}
之后停止制作模式。
答案 0 :(得分:1)
使用+
使?
量词延迟。您不需要{1}
部分。
public\s+enum\s+\w+\s*(?<enumBody>\{[\S|\s|]+?\})
答案 1 :(得分:0)
尝试将^放在正则表达式的前面。
答案 2 :(得分:0)
如果这是整个正则表达式,则延迟量词将起作用,但如果您想阻止匹配超过结束括号,那么最好通过使用[^}]
明确禁止该字符作为组的一部分:
public enum.*\w.*(?<enumBody>[^}]+})
如果你不想在开放式大括号之前加入空格,你可以在前面做同样的事情:
public enum[^{]*(?<enumBody>{[^}]+})