\S*
Соответствует нулю или более непробельных символов. Вам это здесь не нужно.
Вместо этого используйте .*
(ноль или более не-символов новой строки) или явно укажите, какие символы вам нужны.
Например, [A-z0-9 ()]*
будет разрешать только буквы, числа, пробелы и паратезы.
Чтобы удалить пробелы до или после, вы можете добавить \s*
(маленький s
) вне вашей группы и сделать свой *
не жадным с вопросительным знаком: \s*(.*?)\s*
.
Все вместе:
import re
str = "'Elevation Info:Elevation range:\xa05680 - 5720 ft\xa0\xa0\xa0\xa0(40-foot closed contour) NAVD88 Elevation:\xa05683 ft / 1732 m\xa0\xa0\xa0\xa0(Range 5683 - 5723 ft)Latitude/Longitude (WGS84)32° 56\' 17\'\' N, 116° 29\' 9\'\' W32.938182, -116.485858 (Dec Deg)548063 E 3644551 N, Zone 11 (UTM)CountryUnited StatesState/ProvinceCalifornia (Highest Point) County/Second Level RegionSan DiegoLinksSearch Engines - search the web for \"Garnet Mountain'\""
countries = re.findall(r"Country\s*(.*?)\s*State/", str)
provinces = re.findall(r"Province\s*(.*?)\s*County/", str)
regions = re.findall(r"Second Level Region\s*(.*?)\s*Links", str)
print("Countries:")
for country in countries:
print(" ", country)
print("Provinces:")
for province in provinces:
print(" ", province)
print("Second Level Regions:")
for region in regions:
print(" ", region)
Вы можете поиграть с ним здесь: https://regex101.com/r/yeiJVg/1
Или вы можете сгруппировать их все вместе, чтобы найти несколько групп вбольшая строка:
import re
str = "'Elevation Info:Elevation range:\xa05680 - 5720 ft\xa0\xa0\xa0\xa0(40-foot closed contour) NAVD88 Elevation:\xa05683 ft / 1732 m\xa0\xa0\xa0\xa0(Range 5683 - 5723 ft)Latitude/Longitude (WGS84)32° 56\' 17\'\' N, 116° 29\' 9\'\' W32.938182, -116.485858 (Dec Deg)548063 E 3644551 N, Zone 11 (UTM)CountryUnited StatesState/ProvinceCalifornia (Highest Point) County/Second Level RegionSan DiegoLinksSearch Engines - search the web for \"Garnet Mountain'\""
matches = re.findall(r"Country\s*(.*?)\s*State/[.*\n]*Province\s*(.*?)\s*County/[.*\n]*Second Level Region\s*(.*?)\s*Links", str)
for match in matches:
print("Country: {}, Province: {}, Second Level Region: {}".format(*match))