В чем разница между [0-9]{1,2}
и ^[0-9]{1,2}$
?Регулярные выражения
Если мы удалим ^
и $
, что получилось бы в этом случае?
Спасибо.
В чем разница между [0-9]{1,2}
и ^[0-9]{1,2}$
?Регулярные выражения
Если мы удалим ^
и $
, что получилось бы в этом случае?
Спасибо.
Эти символы называются привязки и привязаны к определенным позициям в строке. Если вы не обсуждаете многострочные регулярные выражения, они свяжутся с началом (для ^
) и заканчивают (для $
) строки.
Это означает, что ^[0-9]{1,2}$
- это строка, состоящая из ровно одной или двух цифр и ничего больше, в то время как [0-9]{1,2}
- это строка любого размера, содержащая в себе одну или две последовательные цифры.
Итак, первый будет соответствовать 1
, 77
, 96
, 42
и так далее. Последний будет также соответствует любому из них с любым количеством текста с обеих сторон, например paxdiablo is number 1
, calling car 54, where are you
и так далее.
Если ваш двигатель регулярных выражений способен обрабатывать многострочный ввод, значение обычно слегка изменяется. ^
будет связываться либо с началом строки, либо с нулевой точкой после символа конца строки. Аналогично, $
будет привязываться к концу строки и любой точке нулевой ширины до конца строки.
В таких случаях, если вы хотите соответствовать только началу или концу строки, вы, вероятно, найдете, что можете использовать \A
и \Z
.
+1 Хороший ответ.Но есть одна деталь о '' 'вы вычеркнули: для многих/большинства ароматов регулярных выражений Perl (например, Perl, PHP, Python, но НЕ Javascript),' '' anchor будет соответствовать перед символом новой строки в конце строка, даже если многострочный режим выключен. Поэтому '^ [0-9] {1,2} $' будет соответствовать строке: '' 12 \ n "'. – ridgerunner
^
означает, что совпадение должно появиться в начале строки, а $
говорит, что оно должно совпадать с концом строки.
В вашем случае [0-9]{1,2}
будет соответствовать любому числу с одной или двумя цифрами внутри любой строки (например, sakdj12lkjad92
будет соответствовать), в то время как последний будет соответствовать только в том случае, если строка содержит только одну или две цифры.
Спасибо за ваш ответ. Таким образом, в случае '^ [0-9] {1,2} $' это означает, что он будет ** всего ** соответствовать строкам, которые выглядят следующим образом: * 1, 34, 56, 2, 10, .. .и т.д*? – Simplicity
Это правильно. – halfdan
Матч начала и конца строки. Я думаю, что это объяснительно. –
@webarto, это должно быть какое-то новое определение фразы «самоочевидное», о котором я раньше не знал :-) С извинениями перед великим Дугласом Адамсом за кражу его фразы. В символе '^' нет __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Само собой разумеется, как правило, означает, что он стоит отдельно, без каких-либо дополнительных вкладов. Это значительно отличается от того, чтобы искать тот факт, что '^' _means_ начинает строку. Обозначение _ характера может быть самоочевидным, но сам символ не является. IMNSHO :-) – paxdiablo
@paxdiablo, спасибо за разъяснение, уважаю :) –