Как исключить определенный шаблон символов с помощью регулярных выражений - PullRequest
0 голосов
/ 31 марта 2012

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

5 -       #in words: digit, space, dash & space)

Я знаю, как исключить компоненты по отдельности: [^5 ^-], но я хочу исключить конкретный шаблон. Это возможно?

Обновление - я использую Ruby в качестве языка программирования.

Вот некоторые примеры ввода и желаемого результата.

Input:  1 - Blue-Stork Stables; 2 - Young, Robert, S.; 3 - Seahorse Stable; 4 - Carney, Elvis; 5 - Guerrero, Juan, Carlos-Martin; 6 - Dubb, Michael; 7 - Summers, Hope; 8 - DTH Stables; 9 - Peebles, Matthew\n

желаемый результат будет:

Output: Blue-Stork Stables; Young, Robert, S.; Seahorse Stable; Carney, Elvis; Guerrero, Juan, Carlos-Marting; Dubb, Michael; Summers, Hope; DTH Stables; Peebles, Matthew\n

Обратите внимание на штрихи на конюшнях Синего аиста и Хуана Карлоса-Мартина.

1 Ответ

4 голосов
/ 31 марта 2012

РЕДАКТИРОВАТЬ: Таким образом, вы имеете в виду «удалить», а не «исключить».Нет проблем:

result = subject.gsub(/\d+ - /, '')

преобразует ваш вход в желаемый выход.Я позволил себе разрешить более одной цифры (в конце концов, если числа достигают 10 или выше, вы, вероятно, тоже захотите удалить их полностью. Верно?).


(Старый ответ для«исторические причины»)

В зависимости от того, что вы подразумеваете под «исключить», создается впечатление, что вы ищете отрицательные косвенные утверждения:

^(?!.*\d - )

не удастся выполнить для строк, содержащих 5 - где угодно и преуспеть во всех других строках:

"5 - "       // fail
"5 -"        // match
"abc5 - xyz" // fail
"foobar5 - " // fail
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...