.NET 9 C# эквивалент повторной компиляции Python для анализа строк UriC#

Место общения программистов C#
Ответить
Anonymous
 .NET 9 C# эквивалент повторной компиляции Python для анализа строк Uri

Сообщение Anonymous »

У меня есть следующее регулярное выражение в Python, которое анализирует Uri:
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)

Я конвертирую это в C#, используя символ вертикальной черты |:
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);

но он не проходит следующие тесты, которые проходят в Python:
[InlineData("[::1]:8080", false)]
[InlineData("127.0.0.1:8080", false)]
[InlineData("localhost:8080", false)]
[InlineData("www.google.com", false)]


Подробнее здесь: https://stackoverflow.com/questions/797 ... ri-strings
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»