2013-05-22 2 views
0

Я должен написать регулярное выражение, которое будет соответствовать любой последовательности имен файлов масок, например:регулярное выражение, чтобы соответствовать любому имени файла маски

три теста:
object.scrn_1-2_0006 - должен соответствовать object.scrn_1-2
object.scrn0006 - должны соответствовать object.scrn
object0006 - должно соответствовать object

где 0006 - количество файлов в последовательности, от 0000 до любого числа.

Возможно, второе выражение должно совпадать с этим номером.
Пока довольно легко совместить второе и третье, мне было сложно сопоставить первое.

я использовал следующее регулярное выражение для поиска имени:
[a-zA-Z0-9_\-\.]+[_\-\.]?\d*

и это один, чтобы соответствовать номер:
[_\-\.]?[123456789][0-9]*\b

Я был бы очень признателен за любую помощь. Благодарю.

+1

Пытались ли вы что-нибудь еще? – Jerry

+0

не первый пример соответствует 'object.scrn_1-2_'? – Raptor

ответ

0

/^(.+)\d{4)$/ должны делать то, что вам нужно в случае object.scrn_1-2_0006, object.scrn_1-2_ будет в первом регистре

0

Вы можете используйте одно регулярное выражение, чтобы совместить и поймать нужные вам фрагменты. Например, вы можете использовать

(^.*)(\d{4}$) 

(^.*) ловит каждый символ в начале строки;

(\d{4}$) ловит 4 цифры (\d означает один цифровой символ и {4} составляет ровно 4 цифры).

Первая пойманная группа - это все, что осталось до последних четырех цифр, а вторая группа поймала 4 цифры.

Если может быть переменное число цифр, просто поверните {4} к +

(^.*)(\d+$) 
+0

Основная проблема заключается в том, что в конце может быть больше или меньше 4 цифр. –

+0

@ user1598259 Затем просто измените '{4}' на '+'. Я добавил это би к моему ответу. – Jerry

+0

@ user1598259 Он будет соответствовать всему имени, но _capture_ конкретным битам и поместить их в список или массив, в зависимости от языка, который вы используете. – Jerry

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