import re
regex = re.compile(r"^ *analyticsConfig\.analyticsClass = WLAnalyticsWrapper\.self", flags=re.MULTILINE)
test_str = ("@objc (WLAppDelegate)\n"
"open class WLAppDelegate: LUUIBaseAppDelegate {\n\n"
" fileprivate var overrideTabBarControllerDelegate: LUUITabBarControllerDelegate?\n"
" open override var tabBarControllerDelegate: UITabBarControllerDelegate? {\n"
" if overrideTabBarControllerDelegate == nil {\n"
" overrideTabBarControllerDelegate = WLTabBarControllerDelegate()\n"
" }\n"
" return overrideTabBarControllerDelegate\n"
" }\n\n"
" @objc open override func applyAppearance() {\n"
" super.applyAppearance()\n"
" WLAppearance.apply()\n"
" }\n\n"
" // swiftlint:disable:next function_body_length\n"
" @objc open override func configureApplicationKeys() {\n"
" let appConfig: LUUIApplicationConfiguration = LUUIApplicationConfiguration.shared()\n\n"
" appConfig.crashlyticsAPIKey = WLCrashlyticsAPIKey\n"
" appConfig.googleAnalyticsTrackingID = WLGoogleAnalyticsTrackingID\n"
" appConfig.inviteFriendsShowsQRCode = true\n"
" appConfig.referAFriendCampaignID = NSNumber(value: WLReferAFriendCampaignID)\n"
" appConfig.usesSideNavigation = false\n"
" appConfig.enablePaymentPreferenceSelection = true\n"
" appConfig.sendGiftCardFromSettings = true\n"
" appConfig.claimBankingEnabled = true\n"
" appConfig.showEnableLocationAlert = true\n"
" appConfig.enableFacebookLogin = true\n"
" appConfig.myRewardsEnabled = true\n"
" appConfig.showOptionalInfoDuringRegistration = true\n"
" appConfig.analyticsConfiguration = analyticsConfiguration()\n"
" appConfig.cardReaderConfiguration = cardReaderConfiguration()\n"
" appConfig.appLocationsScreen = .mapLocations\n"
" appConfig.allowsOrderAhead = true\n"
" appConfig.enableOrderAheadLandingScreen = true\n"
" appConfig.allowsOrderAheadDelivery = false\n"
" appConfig.orderAheadMenuLayoutStyle = .list\n"
" appConfig.modularRewardsEnabled = true\n"
" appConfig.enableOrderAheadTipCell = false\n\n"
" appConfig.levelupAPIKey = WLLevelUpAPIKey\n"
" appConfig.environmentConfigProd.levelupAppID = WLLevelUpAPIKey as NSString\n"
" appConfig.environmentConfigStaging.levelupAPIKey = WLLevelUpAPIKeyStaging as NSString\n\n"
" appConfig.levelupAppID = WLLevelUpAppID\n"
" appConfig.environmentConfigProd.levelupAppID = WLLevelUpAppID as NSString\n"
" appConfig.environmentConfigStaging.levelupAppID = WLLevelUpAppIDStaging as NSString\n\n"
" if WLLegacyLoyaltyCampaignID > 0 {\n"
" appConfig.loyaltyMigrationCampaignID = NSNumber(value: WLLegacyLoyaltyCampaignID)\n"
" appConfig.environmentConfigProd.loyaltyMigrationCampaignID = appConfig.loyaltyMigrationCampaignID!\n"
" appConfig.environmentConfigStaging.loyaltyMigrationCampaignID = NSNumber(value: WLLegacyLoyaltyCampaignIDStaging)\n"
" }\n\n"
" if WLReferAFriendCampaignID > 0 {\n"
" appConfig.referAFriendCampaignID = NSNumber(value: WLReferAFriendCampaignID)\n"
" appConfig.environmentConfigProd.referAFriendCampaignID = appConfig.referAFriendCampaignID!\n"
" appConfig.environmentConfigStaging.referAFriendCampaignID = NSNumber(value: WLReferAFriendCampaignIDStaging)\n"
" }\n\n"
" if let rewardsLoyaltyCampaignID: NSNumber = applicationConfig().rewardsLoyaltyCampaignID {\n"
" appConfig.rewardsLoyaltyCampaignID = rewardsLoyaltyCampaignID\n"
" appConfig.rewardsLoyaltyCampaignType = .spendBased\n"
" } else if WLRewardsLoyaltyCampaignID > 0 {\n"
" appConfig.rewardsLoyaltyCampaignID = NSNumber(value: WLRewardsLoyaltyCampaignID)\n"
" appConfig.environmentConfigProd.rewardsLoyaltyCampaignID = appConfig.rewardsLoyaltyCampaignID!\n"
" appConfig.environmentConfigStaging.rewardsLoyaltyCampaignID = NSNumber(value: WLRewardsLoyaltyCampaignIDStaging)\n"
" appConfig.rewardsLoyaltyCampaignType = .spendBased\n"
" }\n\n"
" if WLRewardsStatusCampaignID > 0 {\n"
" appConfig.rewardsStatusCampaignID = NSNumber(value: WLRewardsStatusCampaignID)\n"
" appConfig.environmentConfigProd.rewardsStatusCampaignID = appConfig.rewardsStatusCampaignID!\n"
" appConfig.environmentConfigStaging.rewardsStatusCampaignID = NSNumber(value: WLRewardsStatusCampaignIDStaging)\n"
" appConfig.rewardsStatusCampaignType = .spendBased\n"
" }\n\n"
" appConfig.analyticsConfiguration = analyticsConfiguration()\n"
" appConfig.cardReaderConfiguration = cardReaderConfiguration()\n"
" appConfig.crashReportingConfiguration = crashReportingConfiguration()\n"
" appConfig.viewControllerConfiguration = viewControllerConfiguration()\n"
" appConfig.viewConfiguration = viewConfiguration()\n"
" appConfig.cellConfiguration = cellConfiguration()\n"
" }\n\n"
" @objc open func analyticsConfiguration() -> LUUIAnalyticsConfiguration {\n"
" let analyticsConfig: LUUIAnalyticsConfiguration = LUUIAnalyticsConfiguration()\n"
" analyticsConfig.analyticsClass = WLAnalyticsWrapper.self\n"
" return analyticsConfig\n"
" }\n\n"
" @objc open func cardReaderConfiguration() -> LUUICardReaderConfiguration {\n"
" let cardReaderConfig: LUUICardReaderConfiguration = LUUICardReaderConfiguration()\n"
" cardReaderConfig.cardReaderViewControllerClass = WLCardReaderViewController.self\n"
" return cardReaderConfig\n"
" }\n\n"
" @objc open func crashReportingConfiguration() -> LUUICrashReportingConfiguration {\n"
" let crashReportingConfig: LUUICrashReportingConfiguration = LUUICrashReportingConfiguration()\n"
" crashReportingConfig.crashReportingWrapperClass = WLCrashlyticsWrapper.self\n"
" return crashReportingConfig\n"
" }\n\n"
" @objc open override func tabBarViewControllers() -> [Any]? {\n"
" return UITabBarController.loggedInTabBarController()\n"
" }\n\n"
" @objc open func viewConfiguration() -> LUUIViewConfiguration {\n"
" let config = LUUIViewConfiguration()\n\n"
" config.imageRewardProgressionViewClass = WLImageRewardProgressionView.self\n\n"
" return config\n"
" }\n\n"
" @objc open func viewControllerConfiguration() -> LUUIViewControllerConfiguration {\n"
" let config = LUUIViewControllerConfiguration()\n\n"
" config.confirmGiftCardOrderViewControllerClass = WLConfirmGiftCardOrderViewController.self\n"
" config.forgotPasswordViewControllerClass = WLForgotPasswordViewController.self\n"
" config.getStartedViewControllerClass = WLGetStartedViewController.self\n"
" config.interstitialViewControllerClass = WLInterstitialViewController.self\n"
" config.inviteFriendsViewControllerClass = WLInviteFriendsViewController.self\n"
" config.logInViewControllerClass = WLLogInViewController.self\n"
" config.mapLocationsLocationDetailViewControllerClass = WLMapLocationsLocationDetailViewController.self\n"
" config.mapLocationsSearchViewControllerClass = WLMapLocationsSearchViewController.self\n"
" config.mapLocationsViewControllerClass = WLMapLocationsViewController.self\n"
" config.orderAheadLandingViewControllerClass = WLOrderAheadLandingViewController.self\n"
" config.orderGiftCardViewControllerClass = WLOrderGiftCardViewController.self\n"
" config.paymentMethodDetailViewControllerClass = WLPaymentMethodDetailViewController.self\n"
" config.payViewControllerClass = WLPayViewController.self\n"
" config.scanSuccessViewControllerClass = WLScanSuccessViewController.self\n"
" config.selectPaymentPreferenceViewControllerClass = WLSelectPaymentPreferenceViewController.self\n"
" config.settingsViewControllerClass = WLSettingsViewController.self\n"
" config.signUpViewControllerClass = WLSignUpViewController.self\n"
" config.signUpOrLogInViewControllerClass = WLSignUpOrLogInViewController.self\n"
" config.transactionDetailViewControllerClass = WLTransactionDetailViewController.self\n"
" config.transactionHistoryViewControllerClass = WLTransactionHistoryViewController.self\n"
" config.rewardsStatusLevelsViewControllerClass = WLRewardsStatusLevelsViewController.self\n"
" config.permissionPrimerViewControllerClass = WLPermissionPrimerViewController.self\n"
" config.selectPaymentMethodViewControllerClass = WLSelectPaymentMethodViewController.self\n"
" config.availableRewardsDrawerViewControllerClass = WLAvailableRewardsDrawerViewController.self\n"
" config.modularRewardsViewControllerClass = WLModularRewardsViewController.self\n\n"
" return config\n"
" }\n\n"
" @objc open func cellConfiguration() -> LUUICellConfiguration {\n"
" let config = LUUICellConfiguration()\n\n"
" config.captionedImageHeaderViewCellClass = WLCaptionedImageHeaderViewCell.self\n"
" config.locationCellClass = WLLocationCell.self\n"
" config.mapLocationsButtonsCellClass = WLMapLocationsButtonsCell.self\n"
" config.mapLocationsLocationCellClass = WLMapLocationsLocationCell.self\n"
" config.transactionEarnedCreditCellClass = WLTransactionEarnedCreditCell.self\n"
" config.transactionHistoryCellClass = WLTransactionHistoryCell.self\n"
" config.statusLevelGoalCellClass = WLStatusLevelGoalCell.self\n"
" config.availableRewardIconTableViewCellClass = WLAvailableRewardIconTableViewCell.self\n"
" config.orderAheadSpecialInstructionsCellClass = WLOrderAheadSpecialInstructionsCell.self\n"
" config.orderAheadCategoryMenuListTableViewCellClass = WLOrderAheadCategoryMenuListTableViewCell.self\n\n"
" return config\n"
" }\n\n"
" @objc open override func settingsSectionsData() -> LUUIStaticTableViewData {\n"
" let data = LUUIStaticTableViewSectionsData()\n\n"
" data.add(WLStaticTableViewSectionFactory.customSocialSection())\n"
" data.add(WLStaticTableViewSectionFactory.customAccountSection())\n"
" data.add(WLStaticTableViewSectionFactory.customHelpSection())\n\n"
" return data\n"
" }\n\n"
"}\n")
match = regex.search(test_str)
if match:
print(f"Match was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html