2016-03-21 5 views
-7

У меня есть несколько сомнений в том, что мне не удалось прояснить исследования и я надеюсь на какую-то помощь.Регулярные выражения сомнений

1) Что делает m, и что делать / / перед m и в конце делать? $ var = ~ m/[^ 0-9] +/

2) /[^0-9]+/ Какая из следующих строк соответствует этому регулярному выражению?

 A) `123` 

    B) `4` 

    C) `I see 5 dogs` 

    D) `I see five dogs` 

Мой ответ 2): Это соответствует C и D, а не A и B, потому что нет никакого символа или низина, который не содержит 0-9.

+0

Фактически '/ [^ 0-9] + /' будет соответствовать 'I'' '' '' dogs' в опции ** C **. Подробнее о 'm' [здесь] (https://www.cs.cf.ac.uk/Dave/PERL/node83.html). –

+0

Это не будет, без модификатора 'g'. – Sobrique

+0

Это основной вопрос, но я не понимаю, почему он должен иметь 7 downvotes и 4 закрытых голоса. – mob

ответ

0

m// является оператором матча. // являются разделителями регулярных выражений, которые вы используете. Если вы используете разделители по умолчанию (//), тогда вы можете пропустить указание m в начале.

Если вы хотите использовать некоторые другие символы в качестве разделителей, например !, тогда m не требуется: m!/some/string/with/slashes!.