Если вы хотите, чтобы -
означало черту буквально в определении класса символов, вам нужно поставить его как последний (или первый) символ.Так [abc-]
- это класс символов, содержащий 4 символа: a
, b
, c
, -
.С другой стороны, [ab-c]
содержит только 3 символа, не включая -
, потому что -
является определением диапазона.
Итак, что-то вроде этого (из вашего шаблона):
[A-Z0-9.-:]
Определяет 3 диапазона: от A
до Z
, от 0
до 9
и от .
(ASCII 46) до :
(ASCII 58).Вместо этого вы хотите:
[A-Z0-9.:-]
Ссылки
Примечаниепри повторении
Я заметил, что вы использовали {1,}
в своем шаблоне для обозначения "один или более из".
.NET регулярные выражения (как и большинство других разновидностей) поддерживают следующие сокращения:
?
: "ноль или один" {0,1}
*
: "ноль или больше" {0,}
+
: «один или более» {1,}
Они могут потребовать некоторого привыкания, но они также довольно стандартны.
Ссылки
Смежные вопросы
Примечание к строковым литералам в кавычках C # @
В то время как удвоение косых черт в строковых литералах для регулярных выражений является нормой внапример, Java (по необходимости), в C # вы действуетеобычно есть возможность использовать @
строковые литералы в кавычках.
То есть эти пары строк идентичны:
"(http://|www\\.)"
@"(http://|www\.)"
"c:\\Docs\\Source\\a.txt"
@"c:\Docs\Source\a.txt"
Использование @
может привести к более читаемым шаблонам регулярных выраженийпотому что буквальная косая черта не должна быть удвоена (хотя, с другой стороны, двойная кавычка теперь, в свою очередь, должна быть удвоена).
Ссылки