редактировать:
Приятные дополнительные детали.Вы получаете сообщение об ошибке типа None, потому что шаблон ничего не соответствует;Проще показать, как проверить, чем объяснить ...
Итак, давайте немного изменим ваш пример и посмотрим, будет ли это то, что вы ищете.Обратите внимание на отсутствие начальных и конечных слешей на шаблоне (см. оригинал , ниже).
import re
txt = "CSIR-National Botanical Research Institute, Plant Transgenic Laboratory, U.P., India. Electronic address: i.sanyal@nbri.res.in."
# note: str is the string class type, python would happily let you assign that to a string literal.
print('txt={}'.format(txt))
pattern = r'([A-Z][^\s,.]+[.]?\s[(]?)*(Hospital|University|Institute|Law School|School of|Academy|College)[^,\d]*(?=,|\d)'
m = re.search(pattern, txt)
if m:
print('found some things, groups={}'.format(m.groups()))
else:
print('no match')
результаты:
txt=CSIR-National Botanical Research Institute, Plant Transgenic Laboratory, U.P., India. Electronic address: i.sanyal@nbri.res.in.
found some things, groups=('Research ', 'Institute')
Я думаю $org_arr часть в PHP настроена в списке Python m.groups () .
original:
Возможно, попробуйте в Python без начальных и конечных слешей?Давайте начнем с создания простого шаблона ...
Пример PHP
Эти Документы PHP показывают этот пример:
// The "i" after the pattern delimiter indicates a case-insensitive search
if (preg_match("/php/i", "PHP is the web scripting language of choice.")) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
Так как они 'при поиске php косые черты выглядят как разделители шаблонов.
тот же пример в python
В Python это будет так (не шаблон r'php ', не r '/ php /').
import re
if re.match( r'php', 'PHP is the web scripting language of choice.', re.IGNORECASE):
print('A match was found.')
else:
print('A match was not found.')
Чуть более полезным было бы сохранение объекта соответствия, чтобы вы могли использовать свои группы ...
import re
m = re.match( r'(php)', 'PHP is the web scripting language of choice.', re.IGNORECASE)
if m:
print('A match was found, group(1)={}'.format(m.group(1)))
else:
print('A match was not found.')