2015-01-07 3 views
1

Например, у меня есть следующие строки:Match точное число шаблон

-----ABC----- 

И использовать

regexp {^[\-]+.*[\-]+} $string 

может соответствовать выше строки. Но если я хочу сопоставить фиксированное число -, например. 5 раз, как это сделать? Я попробовал

regexp {^[\-]{5}.*[\-]{5}} $string 

Но это не работает.

+2

Может ли быть '-' в середине строки, которую вы соответствуете? Например "' ----- SAMPLE-TEXT ----- '"? –

ответ

2

Часть .* соответствует также -. Я хотел бы изменить его к этому:

^-{5}[^-]*-{5}$ 

[^-]* означает «любой символ кроме- (вы не должны ставить - в [], если это разрешено только характер)

1

Предполагая, что. по не работает вы имеете в виду, что это также соответствует что-то вроде так: -----ABC--------------, вы могли бы изменить это: {^[\-]{5}.*[\-]{5}} к этому:. {^[\-]{5}[^-]*[\-]{5}$}

Главное отличие состоит в том, что я указываю, что средний раздел, то есть раздел, который в вашем примере содержит ABC, должен не быть сделан из тире, поэтому он будет соответствовать 5 штрихам с начала строки (^[\-]{5}) , за которым следуют 0 или более символов, которые являются не тире ([^-]*), а затем еще 5 тире и завершение строки ([\-]{5}$).

+0

Хорошо, это хорошо работает для меня. спасибо –

Смежные вопросы