1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- namespace Caliburn.Micro.Core {
- using System;
- /// <summary>
- /// Helper class for encoding strings to regular expression patterns
- /// </summary>
- public static class RegExHelper {
- /// <summary>
- /// Regular expression pattern for valid name
- /// </summary>
- public const string NameRegEx = @"[\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}_][\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\p{Cf}_]*";
- /// <summary>
- /// Regular expression pattern for subnamespace (including dot)
- /// </summary>
- public const string SubNamespaceRegEx = NameRegEx + @"\.";
- /// <summary>
- /// Regular expression pattern for namespace or namespace fragment
- /// </summary>
- public const string NamespaceRegEx = "(" + SubNamespaceRegEx + ")*";
- /// <summary>
- /// Creates a named capture group with the specified regular expression
- /// </summary>
- /// <param name="groupName">Name of capture group to create</param>
- /// <param name="regEx">Regular expression pattern to capture</param>
- /// <returns>Regular expression capture group with the specified group name</returns>
- public static string GetCaptureGroup(string groupName, string regEx) {
- return String.Concat(@"(?<", groupName, ">", regEx, ")");
- }
- /// <summary>
- /// Converts a namespace (including wildcards) to a regular expression string
- /// </summary>
- /// <param name="srcNamespace">Source namespace to convert to regular expression</param>
- /// <returns>Namespace converted to a regular expression</returns>
- public static string NamespaceToRegEx(string srcNamespace) {
- //Need to escape the "." as it's a special character in regular expression syntax
- var nsencoded = srcNamespace.Replace(".", @"\.");
- //Replace "*" wildcard with regular expression syntax
- nsencoded = nsencoded.Replace(@"*\.", NamespaceRegEx);
- return nsencoded;
- }
- /// <summary>
- /// Creates a capture group for a valid name regular expression pattern
- /// </summary>
- /// <param name="groupName">Name of capture group to create</param>
- /// <returns>Regular expression capture group with the specified group name</returns>
- public static string GetNameCaptureGroup(string groupName) {
- return GetCaptureGroup(groupName, NameRegEx);
- }
- /// <summary>
- /// Creates a capture group for a namespace regular expression pattern
- /// </summary>
- /// <param name="groupName">Name of capture group to create</param>
- /// <returns>Regular expression capture group with the specified group name</returns>
- public static string GetNamespaceCaptureGroup(string groupName) {
- return GetCaptureGroup(groupName, NamespaceRegEx);
- }
- }
- }
|