2014-12-29 6 views
1

У меня есть следующие строки:шаблона Extract, используя регулярное выражение

Name-AB_date, Name-XYZ_date, Name-JK_date, Name-AB_gate_date, Name-XYZ_gate_date, Name-JK_gate_date 

мне нужно регулярное выражение в PHP, который будет соответствовать следующим подстрокам в каждом из приведенных выше строк

AB, XYZ, JK, AB, XYZ, JK 

Я в настоящее время использую этот regex:

(?<=Name-)(.*)(?=_) 

Однако в случае

Name-AB_gate_date, Name-XYZ_gate_date and Name-JK_gate_date 

Он возвращается

AB_gate, XYZ_gate and JK_gate 

Как я могу получить это просто соответствовать следующим в этих трех строках?

AB, XYZ и JK

Permlink: http://www.phpliveregex.com/p/96Y

ответ

3

.* жаден по умолчанию. Измените .* в своем регулярном выражении на .*?. Вы можете попробовать это регулярное выражение также,

(?<=Name-)[^_]*(?=_) 

ИЛИ

Без опережающего просмотра.

(?<=Name-)[^_]* 
1

Все, что вам нужно сделать, это сделать (.*) нежадным.

(?<=Name-)(.*?)(?=_) 
1

Как бы это было с

Name-(\w*?)_ 

Если это соответствует вашим потребностям?

EDIT:

Name-(\w+?)_ 

Если должно быть больше, чем один символ.

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