--- lang: ja-jp breaks: true --- # 「グループ定義の均等化」を使用して、メソッドの中身を取得する正規表現 C# 2021-11-28 ```csharp= public const string Tag_Header = "Header"; public const string Tag_Method = "Method"; private static Regex GetRegMethodContent( string strMethodName ) { // メソッド の中身を抽出。 // ※「グループ定義の均等化」を利用。 string pattern = @"(?<" + Tag_Header + @">\s+" + strMethodName + @"\s*\([^\{\}]+)(?<" + Tag_Method + @">\{(?:[^\{\}]*(?:(?:(?'Open'\{)[^\{\}]*)+(?:(?'Close-Open'\})(?:[^\{\}])*)+)*(?(Open)(?!)))\})"; var reg = new Regex( pattern, RegexOptions.Singleline | RegexOptions.Compiled ); return reg; } ``` ```= (?<Tag_Header>\s+MethodName\s*\([^\{\}]+)(?<Tag_Method>\{(?:[^\{\}]*(?:(?:(?'Open'\{)[^\{\}]*)+(?:(?'Close-Open'\})(?:[^\{\}])*)+)*(?(Open)(?!)))\}) ``` ## メソッドの中身の一部を置換する正規表現 ```= (?<Tag_Header>\s+MethodName\s*\([^\{\}]+)(?<Tag_Method>(?<Tag_ContentHead>\{(?:[^\{\}]*(?:(?:(?'Open'\{)[^\{\}]*)+(?:(?'Close-Open'\})(?:[^\{\}])*)+)*(?(Open)(?!)))[^\{\}]*)(?<Tag_Target>xxxxxxxx)(?<Tag_ContentTail>[^\{\}]*\})) ``` ```= ${Tag_Header}${Tag_ContentHead}${Tag_Target}${Tag_ContentTail} ``` ###### tags: `正規表現` `グループ定義の均等化` `C#`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up