regex.fullmatch()
- неправильный метод для использования здесь, я не думаю, что вы поняли, для чего он полезен.
Из документации модуля regex
:
blockquote>
fullmatch
ведет себя подобноmatch
, за исключением того, что оно должно соответствовать всей строке.Ваш шаблон не соответствует всем входной строке. Только если шаблон охватывает все, что , от первого символа до последнего,
fullmatch()
вернет совпадение.Где
re.match()
соответствует только в начале строки, как если бы вы добавили\A
в начало вашего паттерна,regex.fullmatch()
соответствует, как если бы вы добавили\A
в начало, а\Z
до конца вашего шаблона.Обратите внимание, что вам не нужна опция
|(@[A-Za-z0-9_]*)
; этот паттерн полностью покрыт частью(Za\s)?@[A-Za-z0-9_]*
, когда(Za\s)?
не совпадает.Чтобы получить чистый список, используйте
re.findall()
, но используйте группу(?:...)
без захвата , чтобы покрыть необязательную часть, поэтому вы не получите отдельных строк в результатеre.findall()
:>>> import re >>> a = "Za @Foo_Bar: @BAR_foo @FooBAR @BArfoo" >>> re.findall(r'(?:Za\s)?@[A-Za-z0-9_]*', a) ['Za @Foo_Bar', '@BAR_foo', '@FooBAR', '@BArfoo']
Без групп захвата возвращается все совпадение.
Я нахожу Camel-регистр немного более приятным ввести, потому что я нахожу подчеркивание немного неудобным ввести.
Не используйте глобальные переменные.
Я избегаю процедурного кодирования в PHP, я нахожу, что ООП легче сохранить вещи организованными. Кроме того, не PHP имеют достаточно материала в, он уже - глобальное пространство имен?
Обычно я пытаюсь придерживаться:
Item
, Row
, DB
, Items
.$column
, $name
DEBUG
, TYPE_FOO
.get
, perform
, do
), сопровождаемый существительным (исключительный или множественный) описание, чем это управляет на или возвраты (getThing()
, getThings()
)Это определенно зависит от того, для чего Вы кодируете. Если я кодирую PHP или ГРУШУ, я использую Camel-регистр. Если я делаю Python/Django, я использую under_scores. Если я пишу ELisp, я использую штриховые разделители.
В самом PHP почти каждая собственная функция является разделенным подчеркиванием. Большинство примеров кода PHP в документации является разделенным подчеркиванием.
На большинстве языков я думаю, Преобразование регистра Camel или Паскаля является более соответствующим, но я думаю, что существует четкая история для использования разделения подчеркивания в PHP.
Соглашение о присвоении имен Платформ зенда (Который основан на ГРУШЕ) является, вероятно, самым близким, Вы приходите к стандарту в мире PHP. Лично, я предпочитаю использовать lowercase_underscore для имен переменной, но иначе я главным образом следую конвенции ZF.
Обновление на 10-летней годовщине:
В эти дни существует стандарт, который в основном принят в сообществе. Необходимо придерживаться этого:
https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md
Да, самой важной вещью является непротиворечивость. Если Вы - одинокий разработчик, придерживаетесь метода. Если Вы работаете с командой, говорите с другими членами команды. Дифференцирование между globals, функциями/методами и классами сделает чтение кода намного легче. Для некоторых людей Camel-регистр легче, чем using_underlines, таким образом, Ваша команда должна обсудить опции и выбрать стиль.
Примечание: Я использую символы нижнего подчеркивания для своего MySQL table_names, я использую UpperCamelCase для имен полей MySQL:
Обычно я использую $lowerCamelCase для имен переменной и свойств класса, но если он содержит значение от поля, я использую имя поля $UpperCamelCase, или если это будет массив данных из таблицы, то я буду использовать $table_name. Таким образом, я могу легко grep
для SomeField
или some_table
и найдите все относящееся к нему.
Вы не должны использовать эту точную систему, но способность искать все ссылки на поле или таблицу является огромным преимуществом.
Я раньше предпочитал использовать Camel-регистр, но ради непротиворечивости в больших приложениях, я принял руководство по стилю CodeIgniter.
Даже если Вы не используете их платформу, можно ценить работу, которая вошла в определение ясных и всесторонних стилей: http://codeigniter.com/user_guide/general/styleguide.html
Моя цель - безотносительно определенного формата имени - добавляет больше информации. Имя улучшает понимание кода и/или выражает что-то важное?
Если это делает, большой, то Вы преуспели в нем.
Если имя ничего не добавляет, почему Вы потрудились называть его?
Я записал на этом ранее на этой неделе:
Я рекомендовал бы читать ГРУШЕВЫЕ Стандарты Кодирования. Так как ГРУША является официальным Репозиторием Расширения и Приложения PHP, это можно считать официальным кодированием языка стандарта.