Регулярное выражение, совпадающее только со строкой без буквенно-цифрового префикса - PullRequest
2 голосов
/ 27 марта 2011

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

(некоторые символы или ничего, кроме НЕ цифр и буквенных символов) черный

black and white
    black is good color
blackeverywhere
9black cats

это должнопримите первую и вторую строку

РЕДАКТИРОВАТЬ: Может быть, я должен быть более точным, после того, как черный должен быть несколько пробелов и черный не должен быть в начале

это правильный

   a i o black    fdfd

это не

ppooo pblack sdsdds
iii blackdsdsd

Ответы [ 4 ]

2 голосов
/ 27 марта 2011

Если я вас правильно понимаю

$ grep "\bblack\b" file
black and white
    black is good color

$ ruby -ne 'print if /\bblack\b/' file
0 голосов
/ 27 марта 2011

Обновлено на основе новых примеров

Точнее:

(\s|^)black(\s|$)

  1. (\s|^) соответствует пробелу или началу новой строки
  2. black совпадение буквенной строки
  3. (\s|$) соответствует пробелу или концу строки
0 голосов
/ 27 марта 2011

Один из них может работать

/(^|[^a-zA-Z0-9])black(\s|$)/
/(^|[\W_])black(\s|$)/

0 голосов
/ 27 марта 2011

Я думаю:

(\s|^)black(\s|$)

Это должно совпадать с любым пробелом или ничем в начале, за которым следует любой пробел или ничто в конце.

Звучит так, как будто вы просто хотите, чтобы черныйбыть изолированным в строке ... окруженным пробелами, символами табуляции или переводами строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...