Регулярное выражение для сопоставления двух чисел, но ничего больше - PullRequest
0 голосов
/ 23 апреля 2009

Взять следующее содержимое файла:

"52245"
"528"
"06156903"
"52246"
"530"
"00584709"

Какой шаблон будет соответствовать 52245 и 52246, но ничего больше?

Ответы [ 3 ]

17 голосов
/ 23 апреля 2009

То, что может совпадать только с этими двумя числами и ничего больше:

^\"5224[56]\"$

Теперь, если вы ищете что-то более общее (например, любое число с 5 цифрами), вам нужно что-то вроде

^\"\d{5}\"$

Я предполагаю, что кавычки (") являются частью файла. Если это не так, пропустите \" части в выражении.

Конкретное выражение grep, которое вам нужно, это:

grep -E "^\"[[:digit:]]{5}\"$" filename

или взять предложение из комментариев:

grep -P "^\"\d{5}\"$" filename

Я протестировал оба, и они работают на моей машине!

11 голосов
/ 23 апреля 2009
^(52245|52246)$

Вы можете использовать это.

7 голосов
/ 23 апреля 2009
^"5224[56]"$

^"5224(5|6)"$

^"52{2}4[56]"$

^"(52245|52246)"$

...

В качестве регулярного выражения вы должны использовать семантику, которую хотите выразить. Если вы ищете два произвольных числа, используйте ^"(52245|52246)"$. Если числа имеют какое-либо значение - код типа или что-то в этом роде - я бы придерживался ^"5224(5|6)"$.

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