Похоже, вы можете сопоставить и заменить ^[\d-]*\s*
пустой строкой.
[…]
- это класс символов . Что-то вроде [aeiou]
соответствует одному из строчных гласных. \d
является сокращением для класса цифровых символов, поэтому [\d-]
соответствует либо цифре, либо тире. \s
является сокращением для класса символов пробела.
^
- это начало привязки строки . *
- это ноль или более повтор .
Таким образом, шаблон соответствует в начале строки последовательности цифр или тире, за которой следует последовательность пробелов.
Это не ясно из вопроса, но если ввод представляет собой многострочный текст (вместо применения регулярного выражения по одной строке за раз), то вы захотите включить многострочный режим также.
C # фрагмент
Вот пример фрагмента в C #:
var text = @"
2736162 Magazines
23-2311 Numbers
1-38122 Faces
5-231123 Newspapers
31-31235 Armynews
33-12331 Celebrities 1
33-22113 Celebrities 2
Cars
Glasses
";
Console.WriteLine(
Regex.Replace(
text,
@"^[\d-]*\s*",
"",
RegexOptions.Multiline
)
);
Вывод ( как видно на ideone.com ):
Magazines
Numbers
Faces
Newspapers
Armynews
Celebrities 1
Celebrities 2
Cars
Glasses
В зависимости от аромата вам может потребоваться указать многострочный режим как флаг /m
(или (?m)
встроенный). Возможно, вам также придется удвоить обратную косую черту, если вы представляете шаблон как строковый литерал, например в Java вы можете использовать text.replaceAll("(?m)^[\\d-]*\\s*", "")
.
Специальное примечание о включении тире в класс персонажа
Будьте осторожны при включении -
в класс символов […]
, так как он может обозначать диапазон вместо буквального -
символа. Что-то вроде [a-z]
соответствует строчной букве. Что-то вроде [az-]
соответствует либо 'a'
, 'z'
, либо '-'
.
Похожие вопросы