Может кто-нибудь дать мне пример регулярных выражений, использующих {x} и {x,y}?

Я только что узнал из книги о регулярных выражениях на языке Ruby. Я сделал Google это, но все еще запутался {x} а также {x,y},

Книга говорит:

{x} → Совпадение x вхождений предыдущего символа.
{x, y} → Совпадение не менее чем с x экземплярами и не более чем с y экземплярами.

Кто-нибудь может объяснить это лучше, или привести несколько примеров?

4 ответа

Решение

Конечно, посмотрите на эти примеры:

http://rubular.com/r/sARHv0vf72

http://rubular.com/r/730Zo6rIls

/a{4}/

это короткая версия для:

/aaaa/

В нем написано: Совпадение точных 4 (последовательных) символов "а".

где

/a{2,4}/

говорит: Совпадение не менее 2 и не более 4 символов "а".

это будет соответствовать

/aa/
/aaa/
/aaaa/

и это не будет соответствовать

/a/
/aaaaa/
/xxx/

Limiting Repetition хороший онлайн-учебник для этого.

Интервальные выражения

GNU awk именует их как "интервальные выражения" в разделе "Операторы регулярных выражений" своего руководства. Это объясняет выражения следующим образом:

{П}
{П,}
{П, т}
Одно или два числа внутри фигурных скобок обозначают интервальное выражение. Если в фигурных скобках есть одно число, предыдущее регулярное выражение повторяется n раз. Если есть два числа, разделенные запятой, предыдущее регулярное выражение повторяется от n до m раз. Если после запятой стоит одно число, то предыдущее регулярное выражение повторяется не менее n раз:

Руководство также включает в себя следующие справочные примеры:

wh{3}y
    Matches ‘whhhy’, but not ‘why’ or ‘whhhhy’.
wh{3,5}y
    Matches ‘whhhy’, ‘whhhhy’, or ‘whhhhhy’, only.
wh{2,}y
    Matches ‘whhy’ or ‘whhhy’, and so on.

Смотрите также

Я очень рекомендую http://regexbuddy.com/ и очень кратко, регулярное выражение ниже делает то, на что вы ссылаетесь:

[0-9]{3}|\w{3}

Символы [ ] указывают, что вы должны соответствовать числу от 0 до 9. Это может быть что угодно, но [ ] - буквальное совпадение. { } С 3 внутри означает совпадение наборов из 3 чисел от 0 до 9. The | это или утверждение. \ W - это сокращение для любого символа слова, и снова {3} возвращает только наборы из 3.

Если вы заходите на http://regexpal.com/, вы можете ввести указанный выше код и проверить его. Я использовал следующие данные для проверки выражения:

909 steve kinzey

и выражение соответствовало 909, "ste", "kin" и "zey". Он не соответствует 've', потому что его длина составляет всего 2 слова, а символ слова не занимает пустое пространство, поэтому он не может быть перенесен на второе слово.

Другие вопросы по тегам