2013-03-16 4 views
0

У меня проблема с регулярным выражением: я хочу найти каждую группу, в которой есть пользовательский «usager». Обычно в linux имена пользователей расположены после последнего «:», поэтому вот регулярное выражение, которое я сделал "[^:]+$"..Regex Linux/etc/group

Что мне делать? Что я могу добавить к своему регулярному выражению, чтобы найти «usager»?

+0

Я добавил 'к вашему шаблону регулярного выражения, отредактируйте, если« не являются частью вашего регулярного выражения », http://stackoverflow.com/editing-help#code –

+0

' [^:] + usager $ '? –

+0

Спасибо это было главным образом то, что я искал, единственное, что мы должны использовать *, а не + – Isael

ответ

0

Возможно, это должно произойти. Там, наверное, лучший способ сделать это, но по крайней мере, он вводит вас положительный предпросмотр

^\w*(?=:.*usager) 

я использовал этот сайт, чтобы проверить регулярное выражение: http://gskinner.com/RegExr/?34598

+0

Спасибо за ответы, но на самом деле он не работает.: $ – Isael

+0

Если вы предоставите нам часть вашей/etc/group, возможно, мы может придумать лучшее регулярное выражение. –

0

Может быть:

^([^:]*):.*\busager\b 

круглые скобки захватить название группы; \b знаменует границы слов, так что :usager,, :usager$, ,usager, и ,usager$ все совпадают (где $ обозначает конец записи). Если ваши регулярные выражения подвидов не поддерживает \b, то вы можете использовать:

^([^:]*):.*[:,]usager(,|$) 

вместо этого, или с не захватывая скобки:

^([^:]*):.*[:,]usager(?:,|$) 

Или соответствующие вариации на эти темы для суб- виды регулярного выражения, которые вы используете.

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