import Foundation
let pattern = #"administrator"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
{
"switch_themes":true,
"edit_themes":true,
"activate_plugins":true,
"edit_plugins":true,
"edit_users":true,
"edit_files":true,
"manage_options":true,
"moderate_comments":true,
"manage_categories":true,
"manage_links":true,
"upload_files":true,
"import":true,
"unfiltered_html":true,
"edit_posts":true,
"edit_others_posts":true,
"edit_published_posts":true,
"publish_posts":true,
"edit_pages":true,
"read":true,
"level_10":true,
"level_9":true,
"level_8":true,
"level_7":true,
"level_6":true,
"level_5":true,
"level_4":true,
"level_3":true,
"level_2":true,
"level_1":true,
"level_0":true,
"edit_others_pages":true,
"edit_published_pages":true,
"publish_pages":true,
"delete_pages":true,
"delete_others_pages":true,
"delete_published_pages":true,
"delete_posts":true,
"delete_others_posts":true,
"delete_published_posts":true,
"delete_private_posts":true,
"edit_private_posts":true,
"read_private_posts":true,
"delete_private_pages":true,
"edit_private_pages":true,
"read_private_pages":true,
"delete_users":true,
"create_users":true,
"unfiltered_upload":true,
"edit_dashboard":true,
"update_plugins":true,
"delete_plugins":true,
"install_plugins":true,
"update_themes":true,
"install_themes":true,
"update_core":true,
"list_users":true,
"remove_users":true,
"promote_users":true,
"edit_theme_options":true,
"delete_themes":true,
"export":true,
"edit_rcb-cookie":true,
"read_rcb-cookie":true,
"delete_rcb-cookie":true,
"edit_rcb-cookies":true,
"edit_others_rcb-cookies":true,
"publish_rcb-cookies":true,
"read_private_rcb-cookies":true,
"delete_rcb-cookies":true,
"delete_private_rcb-cookies":true,
"delete_published_rcb-cookies":true,
"delete_others_rcb-cookies":true,
"edit_private_rcb-cookies":true,
"edit_published_rcb-cookies":true,
"edit_rcb-blocker":true,
"read_rcb-blocker":true,
"delete_rcb-blocker":true,
"edit_rcb-blockers":true,
"edit_others_rcb-blockers":true,
"publish_rcb-blockers":true,
"read_private_rcb-blockers":true,
"delete_rcb-blockers":true,
"delete_private_rcb-blockers":true,
"delete_published_rcb-blockers":true,
"delete_others_rcb-blockers":true,
"edit_private_rcb-blockers":true,
"edit_published_rcb-blockers":true,
"edit_rcb-tcf-vendor-conf":true,
"read_rcb-tcf-vendor-conf":true,
"delete_rcb-tcf-vendor-conf":true,
"edit_rcb-tcf-vendor-confs":true,
"edit_others_rcb-tcf-vendor-confs":true,
"publish_rcb-tcf-vendor-confs":true,
"read_private_rcb-tcf-vendor-confs":true,
"delete_rcb-tcf-vendor-confs":true,
"delete_private_rcb-tcf-vendor-confs":true,
"delete_published_rcb-tcf-vendor-confs":true,
"delete_others_rcb-tcf-vendor-confs":true,
"edit_private_rcb-tcf-vendor-confs":true,
"edit_published_rcb-tcf-vendor-confs":true,
"loco_admin":true,
"manage_woocommerce":true,
"view_woocommerce_reports":true,
"edit_product":true,
"read_product":true,
"delete_product":true,
"edit_products":true,
"edit_others_products":true,
"publish_products":true,
"read_private_products":true,
"delete_products":true,
"delete_private_products":true,
"delete_published_products":true,
"delete_others_products":true,
"edit_private_products":true,
"edit_published_products":true,
"manage_product_terms":true,
"edit_product_terms":true,
"delete_product_terms":true,
"assign_product_terms":true,
"edit_shop_order":true,
"read_shop_order":true,
"delete_shop_order":true,
"edit_shop_orders":true,
"edit_others_shop_orders":true,
"publish_shop_orders":true,
"read_private_shop_orders":true,
"delete_shop_orders":true,
"delete_private_shop_orders":true,
"delete_published_shop_orders":true,
"delete_others_shop_orders":true,
"edit_private_shop_orders":true,
"edit_published_shop_orders":true,
"manage_shop_order_terms":true,
"edit_shop_order_terms":true,
"delete_shop_order_terms":true,
"assign_shop_order_terms":true,
"edit_shop_coupon":true,
"read_shop_coupon":true,
"delete_shop_coupon":true,
"edit_shop_coupons":true,
"edit_others_shop_coupons":true,
"publish_shop_coupons":true,
"read_private_shop_coupons":true,
"delete_shop_coupons":true,
"delete_private_shop_coupons":true,
"delete_published_shop_coupons":true,
"delete_others_shop_coupons":true,
"edit_private_shop_coupons":true,
"edit_published_shop_coupons":true,
"manage_shop_coupon_terms":true,
"edit_shop_coupon_terms":true,
"delete_shop_coupon_terms":true,
"assign_shop_coupon_terms":true,
"wpml_manage_translation_management":true,
"wpml_manage_languages":true,
"wpml_manage_theme_and_plugin_localization":true,
"wpml_manage_support":true,
"wpml_manage_woocommerce_multilingual":true,
"wpml_operate_woocommerce_multilingual":true,
"wpml_manage_media_translation":true,
"wpml_manage_navigation":true,
"wpml_manage_sticky_links":true,
"wpml_manage_string_translation":true,
"wpml_manage_translation_analytics":true,
"wpml_manage_wp_menus_sync":true,
"wpml_manage_taxonomy_translation":true,
"wpml_manage_troubleshooting":true,
"wpml_manage_translation_options":true,
"wpgmp_admin_overview":true,
"wpgmp_how_overview":true,
"wpgmp_form_location":true,
"wpgmp_manage_location":true,
"wpgmp_form_map":true,
"wpgmp_manage_map":true,
"wpgmp_form_group_map":true,
"wpgmp_manage_group_map":true,
"wpgmp_manage_settings":true,
"wpgmp_manage_extentions":true,
"wp-piwik_read_stats":true,
"manage_instagram_feed_options":true,
"edit_dzsap_items":true,
"edit_others_dzsap_items":true,
"rank_math_edit_htaccess":true,
"rank_math_titles":true,
"rank_math_general":true,
"rank_math_sitemap":true,
"rank_math_404_monitor":true,
"rank_math_link_builder":true,
"rank_math_redirections":true,
"rank_math_role_manager":true,
"rank_math_analytics":true,
"rank_math_site_analysis":true,
"rank_math_onpage_analysis":true,
"rank_math_onpage_general":true,
"rank_math_onpage_advanced":true,
"rank_math_onpage_snippet":true,
"rank_math_onpage_social":true,
"rank_math_admin_bar":true,
"frm_view_forms":true,
"frm_edit_forms":true,
"frm_delete_forms":true,
"frm_change_settings":true,
"frm_view_entries":true,
"frm_delete_entries":true,
"administrator":true,
"manage_translations":true,
"install_languages":true,
"resume_plugins":true,
"resume_themes":true,
"view_site_health_checks":true,
"view_query_monitor":true
}
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let matches = regex.matches(in: testString, range: stringRange)
var result: [[String]] = []
for match in matches {
var groups: [String] = []
for rangeIndex in 1 ..< match.numberOfRanges {
let nsRange = match.range(at: rangeIndex)
guard !NSEqualRanges(nsRange, NSMakeRange(NSNotFound, 0)) else { continue }
let string = (testString as NSString).substring(with: nsRange)
groups.append(string)
}
if !groups.isEmpty {
result.append(groups)
}
}
print(result)
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 Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression