2016-08-03 2 views
3

Мои входные данные, как показано ниже. Я хочу сгруппировать слово между 6-й и 7-й позицией -.Есть ли какой-либо возможный способ сопоставить n-й символ?

my $sa = "a1a1a1-b1b1b1-c-ddd-eee-fff-gggggg-hHhH-iiii-j-KKKKK"; 

Для этого, фактическое регулярное выражение было

/[^-]+-[^-]+-[^-]+-[^-]+-[^-]+-([^-]+)-/ 

Для построить регулярное выражение, я старался, как показано ниже,

my $avc = "[^-]+-" x 5 . "([^-]+)-"; 

my $ar = qr"$avc"; 

$sa =~m/$ar/g; 

print $1; 

Мои сомнения, Есть ли какие-либо варианты доступны для в регулярное выражение. Без использования x. Как я могу сделать это в одном регулярном выражении?

+3

'/ (?: [^ -] + -) {5} ([^ -] +) - /' –

+2

Не, и использовать «раскол ». 'my $ value = (split/- /, $ sa) [6];' – Sobrique

ответ

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