Title: Feature request: Named Captures in Regular Expressions · Issue #1 · netduino/netmf · GitHub
Open Graph Title: Feature request: Named Captures in Regular Expressions · Issue #1 · netduino/netmf
X Title: Feature request: Named Captures in Regular Expressions · Issue #1 · netduino/netmf
Description: Please support named captures in regular expressions. This expression: const string CommandRegex = @"<(?(\w\d)),(?
Open Graph Description: Please support named captures in regular expressions. This expression: const string CommandRegex = @"<(?(\w\d)),(? X Description: Please support named captures in regular expressions. This expression: const string CommandRegex = @"<(?<Address>(\w\d)),(?<Transaction>\d+),(?<Verb>[A-Za-z]\w+)(=((?<N...
Opengraph URL: https://github.com/netduino/netmf/issues/1
X: @github
Domain: patch-diff.githubusercontent.com
Links:
Viewport: width=device-width
Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Feature request: Named Captures in Regular Expressions","articleBody":"Please support named captures in regular expressions.\n\nThis expression: \n\n```\nconst string CommandRegex = @\"\u003c(?\u003cAddress\u003e(\\w\\d)),(?\u003cTransaction\u003e\\d+),(?\u003cVerb\u003e[A-Za-z]\\w+)(=((?\u003cNumericPayload\u003e\\d+)|(?\u003cTextPayload\u003e.+)))?\u003e\";\nconst RegexOptions options = RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.ExplicitCapture | RegexOptions.Singleline;\nstatic readonly Regex Parser = new Regex(CommandRegex, options);\n```\n\nShould produce named captures named \"Address\", \"Transaction\", \"Verb\", \"NumericPayload\" and \"TextPayload\" with the last two being optional and mutually exclusive. This expression compiles correctly and works in \"desktop\" applications, but in .NET Micro Framework it throws \n\n\u003cpre\u003eAn unhandled exception of type 'System.Text.RegularExpressions.RegexpSyntaxException' occurred in System.Text.RegularExpressions.dll\nAdditional information: Syntax error: Missing operand to closure\n\u003c/pre\u003e\n\n\nThis is a lamentable omission because Named Captures are one of the features that make regular expressions more bearable and lead to much cleaner code. Named captures also have great tooling support in products such as ReSharper.\n\nThe following test code should be able to match the example inputs shown in the comment block and retrieve the named captures (again this works correctly on \"desktop\" apps and even compiles in .netMF):\n\n```\n /*\n * Commands are understood in one of three basic formats:\n * \u003cF1,234,Nickname=Fred\u003e -- non-numeric payload\n * \u003cF5,999,MoveTo=1000\u003e -- numeric payload\n * \u003cF3,0,Center\u003e -- verb only (no payload)\n * If the RegEx match was successful, then we must have one of these three possibilities.\n * The address, transaction ID and command verb must always be present so we get those first.\n */\n var deviceAddress = matches.Groups[\"Address\"].Value;\n var transaction = int.Parse(matches.Groups[\"Transaction\"].Value);\n var verb = matches.Groups[\"Verb\"].Value;\n\n // Now we must decide which of the three basic forms we are dealing with.\n // For the verb-only case, we simply set some defaults before checking for a payload.\n var position = Command.NoPosition;\n var data = string.Empty;\n\n if (matches.Groups[\"Position\"].Success)\n {\n // We have a numeric payload\n position = int.Parse(matches.Groups[\"NumericPayload\"].Value);\n }\n if (matches.Groups[\"Data\"].Success)\n {\n // We have a non-numeric payload\n data = matches.Groups[\"TextPayload\"].Value;\n }\n var source = matches.Value;\n /*\n * Commands are understood in one of three basic formats:\n * \u003cF1,234,Nickname=Fred\u003e -- non-numeric payload\n * \u003cF5,999,MoveTo=1000\u003e -- numeric payload\n * \u003cF3,0,Center\u003e -- verb only (no payload)\n * If the RegEx match was successful, then we must have one of these three possibilities.\n * The address, transaction ID and command verb must always be present so we get those first.\n */\n var deviceAddress = matches.Groups[\"Address\"].Value;\n var transaction = int.Parse(matches.Groups[\"Transaction\"].Value);\n var verb = matches.Groups[\"Verb\"].Value;\n\n // Now we must decide which of the three basic forms we are dealing with.\n // For the verb-only case, we simply set some defaults before checking for a payload.\n var position = Command.NoPosition;\n var data = string.Empty;\n\n if (matches.Groups[\"Position\"].Success)\n {\n // We have a numeric payload\n position = int.Parse(matches.Groups[\"NumericPayload\"].Value);\n }\n if (matches.Groups[\"Data\"].Success)\n {\n // We have a non-numeric payload\n data = matches.Groups[\"TextPayload\"].Value;\n }\n var source = matches.Value;\n```\n","author":{"url":"https://github.com/NameOfTheDragon","@type":"Person","name":"NameOfTheDragon"},"datePublished":"2015-07-06T16:22:14.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/1/netmf/issues/1"}
route-pattern /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) route-controller voltron_issues_fragments route-action issue_layout fetch-nonce v2:6d18b059-e647-7b31-2349-ed94e8f9b21d current-catalog-service-hash 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 request-id B444:28400F:492622:5ED7A3:698006AE html-safe-nonce 302dad4ed135ad42ce5866d3da598ddd66ae578970cdb7986109e193c1e4b495 visitor-payload eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCNDQ0OjI4NDAwRjo0OTI2MjI6NUVEN0EzOjY5ODAwNkFFIiwidmlzaXRvcl9pZCI6IjM0MjExOTE2MjYyODkwNTU0MDYiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== visitor-hmac 81f68d7de1095430baa8b22613effc333de8a4dcf45ac94e1b78deeb8d665775 hovercard-subject-tag issue:93319773 github-keyboard-shortcuts repository,issues,copilot google-site-verification Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I octolytics-url https://collector.github.com/github/collect analytics-location / fb:app_id 1401488693436528 apple-itunes-app app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/netduino/netmf/1/issue_layout twitter:image https://opengraph.githubassets.com/03a09c1be63b8584625f8d0fddfe92459a2e0e3adfbf5d26ce0feb500d6e2c26/netduino/netmf/issues/1 twitter:card summary_large_image og:image https://opengraph.githubassets.com/03a09c1be63b8584625f8d0fddfe92459a2e0e3adfbf5d26ce0feb500d6e2c26/netduino/netmf/issues/1 og:image:alt Please support named captures in regular expressions. This expression: const string CommandRegex = @"<(?(\w\d)),(? og:image:width 1200 og:image:height 600 og:site_name GitHub og:type object og:author:username NameOfTheDragon hostname github.com expected-hostname github.com None 60279d4097367e16897439d16d6bbe4180663db828c666eeed2656988ffe59f6 turbo-cache-control no-preview go-import github.com/netduino/netmf git https://github.com/netduino/netmf.git octolytics-dimension-user_id 10588983 octolytics-dimension-user_login netduino octolytics-dimension-repository_id 29845386 octolytics-dimension-repository_nwo netduino/netmf octolytics-dimension-repository_public true octolytics-dimension-repository_is_fork false octolytics-dimension-repository_network_root_id 29845386 octolytics-dimension-repository_network_root_nwo netduino/netmf turbo-body-classes logged-out env-production page-responsive disable-turbo false browser-stats-url https://api.github.com/_private/browser/stats browser-errors-url https://api.github.com/_private/browser/errors release 7c85641c598ad130c74f7bcc27f58575cac69551 ui-target full theme-color #1e2327 color-scheme light dark
URLs of crawlers that visited me.