2012-02-10 12 views
-2

В чем разница между [pattern] и (pattern)? Я не мог найти его на Google, поскольку это не позволяет вводить эти символы. Спасибо.Какая разница между (и [?

+4

Просто прочитайте регулярные выражения по википедии. –

ответ

1

Все, что угодно в [] соответствует только одному символу. Таким образом, вы можете написать [aeiou], чтобы соответствовать любому нижнему регистру, или [a-m], чтобы соответствовать любой букве в первой половине алфавита. Потому что это всего лишь один символ, вам может понадобиться использовать его в сочетании с + или *, если вам нужно несколько символов. Например,

f[aeiou]t соответствует fat, но не feet, тогда как f[aeiou]*t матчи fat, foot, feet и даже ft.

С другой стороны, что-то в () соответствует столько символов, сколько было бы без круглых скобок. Вы используете (), если хотите работать с некоторой частью регулярного выражения. Например, ba(na)* соответствует ba и banana и даже banananana, так как * (что означает любое количество вхождений в то, что непосредственно перед ним) действует в целом na. Кроме того, если вы собираетесь делать замену на основе регулярных выражений, где вы заменяете какую-то часть соответствия новой строкой, то () может использоваться для того, чтобы разграничить то, что будет заменено, - например, вы можете заменить какую-либо часть вашей строки соответствует четвертому заключенному в скобки выражению.

11

() является для группы (обычно используется для захватов, чередование и т.д.), тогда как [] является для установить символы (или одну формы «класс символов», чтобы быть точными).

Таким образом, структура (abc) будет соответствовать всей строке "abc" тогда как [abc] будет m atch любой одиночный символ из a, b или c.

Хотя для регулярных выражений существуют специфические для платформы аспекты, эта разница довольно стандартная, поэтому любое учебное пособие по регулярному выражению должно охватывать ее.

Смежные вопросы