.NET 9 C#-Äquivalent von Python re.compile zum Parsen von URI-StringsC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 .NET 9 C#-Äquivalent von Python re.compile zum Parsen von URI-Strings

Post by Anonymous »

Ich habe den folgenden regulären Ausdruck in Python, der Uri analysiert:

Code: Select all

uri_regex = re.compile(
r'^(?:http|ftp)s?://'  # http:// or https://
r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|'  # domain...
r'localhost|'  # localhost...
r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|'  # ...or ipv4
r'\[?[A-F0-9]*:[A-F0-9:]+\]?)'  # ...or ipv6
r'(?::\d+)?'  # optional port
r'(?:/?|[/?]\S+)$', re.IGNORECASE)
Ich konvertiere dies in C# mit dem Pipe-Zeichen |:

Code: Select all

Regex r = new Regex(@"^(?:http|ftp)s?://|(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|localhost|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|\[?[A-F0-9]*:[A-F0-9:]+\]?)|(?::\d+)?|(?:/?|[/?]\S+)$", RegexOptions.IgnoreCase);
aber die folgenden Testfälle, die in Python bestanden werden, bestehen nicht:

Code: Select all

[InlineData("[::1]:8080", false)]
[InlineData("127.0.0.1:8080", false)]
[InlineData("localhost:8080", false)]
[InlineData("www.google.com", false)]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post