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

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

В книге говорится:

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

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

Ответ 1

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

http://rubular.com/r/sARHv0vf72

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

/a{4}/

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

/aaaa/

В нем говорится: сопоставить точные 4 (последовательные) символы 'a'.

где

/a{2,4}/

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

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

/aa/
/aaa/
/aaaa/

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

/a/
/aaaaa/
/xxx/

Ответ 2

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

Ответ 3

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

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

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

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

909 steve kinzey

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

Ответ 4

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

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

{п}
{П,}
{П, т}
Один или два числа внутри фигурных скобок обозначают интервальное выражение. Если в фигурных скобках есть одно число, предыдущее регулярное выражение повторяется 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.

См. также

  • Ruby Regexp класс.
  • Раздел кванторов в Ruby oniguruma engine.