使用 Python 处理 JSON 正则表达式模式中的无效转义字符错误(android 应用广告正则表达式)

问题描述 投票:0回答:1

我正在使用一个 JSON 文件,其中包含旨在与 Python 的 re 库一起使用的正则表达式模式。但是,我遇到了这些模式的持续无效转义字符错误。我尝试通过进一步转义字符来解决此问题,但问题仍然存在。以下是 JSON 文件的内容:

[
    {
    "Enabled": "False",
    "Name": "Ads Remove 1",
    "Search Regex": "(invoke(?!\N*(close|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop))\N*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/\N*>((\N*(Banner|initAd|Interstitial|load|Native|(can|get|has|is|was)Ad|Rewarded|show|(fetch|refresh|render|request|video)Ad)\N*))\(\N*\)Z\r\n\r\n\s++)move-result\s++([pv]\d+)",
    "Replace Regex": "const/4 $9, 0x0"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 2",
    "Search Regex": "(invoke(?!\N*(close|Deactiv|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop|Throw))\N*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/\N*>(request\N*|(\N*(activat|Banner|build|Event|exec|header|html|initAd|initi|JavaScript|Interstitial|load|log|MetaData|metri|Native|(can|get|is|has|was)Ad|propert|report|response|Rewarded|show|trac|url|(fetch|refresh|render|video)Ad)\N*)|\N*Request)\(\N*\)Z\r\n\r\n\s++)move-result\s++([pv]\d+)",
    "Replace Regex": "const/4 $9, 0x0"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 3",
    "Search Regex": "(invoke(?!\N*(close|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop))\N*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/\N*>(\N*(load|show)\N*)\\(\N*\\)Z\r\n\r\n\s++)move-result\s++([pv]\d+)",
    "Replace Regex": "const/4 $6, 0x0"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 4",
    "Search Regex": "(invoke\N*loadAd\(\N*\)[VZ])",
    "Replace Regex": "#"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 5",
    "Search Regex": "(invoke\N*gms\N*>(loadUrl|loadDataWithBaseURL|requestInterstitialAd|showInterstitial|showVideo|showAd|loadData|onAdClicked|onAdLoaded|isLoading|loadAds|AdLoader|AdRequest|AdListener|AdView)\N*V)",
    "Replace Regex": "#"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 6",
    "Search Regex": "invoke-\N*\{\N*\}, L\N*;->(loadAd|requestNativeAd|showInterstitial|fetchad|fetchads|onadloaded|requestInterstitialAd|showAd|loadAds|AdRequest|requestBannerAd|loadNextAd|createInterstitialAd|setNativeAd|loadBannerAd|loadNativeAd|loadRewardedAd|loadRewardedInterstitialAd|loadAds|loadAdViewAd|showInterstitialAd|shownativead|showbannerad|showvideoad|onAdFailedToLoad)\(\N*\)V",
    "Replace Regex": "#"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 7",
    "Search Regex": "invoke-\N* \{\N*\}, Lcom\N*;->requestInterstitialAd\(\N*\)V|invoke-\N* \{\N*\}, Lcom\N*;->loadAds\(\N*\)V|invoke-\N* \{\N*\}, Lcom\N*;->loadAd\(\N*\)V|invoke-\N* \{\N*\}, Lcom\N*;->requestBannerAd\(\N*\)V|invoke-\N*\{[v|p]\d\},\N*Lcom/facebook\N*\;\->show\(\N*\)V|invoke-\N\{[v|p]\d\},\N*Lcom/google\N*\;\->show\(\N*\)V",
    "Replace Regex": "#"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 8",
    "Search Regex": "\"(http\N*|//\N*)(61\.145\.124\.238|\-ads\.|\.ad\.|\.ads\.|\.analytics\.localytics\.com|\.mobfox\.com|\.mp\.mydas\.mobi|\.plus1\.wapstart\.ru|\.scorecardresearch\.com|\.startappservice\.com|\/ad\.|\/ads|ad\-mail|ad\N*\_logging|ad\.api\.kaffnet\.com|adc3\-launch|adcolony|adinformation|adkmob|admax|admob|admost|adsafeprotected|adservice|adtag|advert|adwhirl|adz\.wattpad\.com|alta\.eqmob\.com|amazon\N*ads|amazon\N*ads|amobee|analytics|applovin|applvn|appnext|appodeal|appsdt|appsflyer|burstly|cauly|cloudfront|com\.google\.android\.gms\.ads\.identifier\.service\.START|crashlytics|crispwireless|doubleclick|dsp\.batmobil\.net|duapps|dummy|flurry|gad|getads|google\.com\/dfp|googleAds|googleads|googleapis\N*\.ad\N*|googlesyndication|googletagmanager|greystripe|gstatic|inmobi|inneractive|jumptag|live\.chartboost\.com|madnet|millennialmedia|moatads|mopub|native\_ads|pagead|pubnative|smaato|supersonicads|tapas|tapjoy|unityads|vungle|zucks)\N*\"",
    "Replace Regex": ""127.0.0.1""
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 9",
    "Search Regex": "ca-app-pub-\d{16}/\d{10}",
    "Replace Regex": "ca-app-pub-0000000000000000/0000000000"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 10",
    "Search Regex": "(\.method\N*(loadAd|requestNativeAd|showInterstitial|fetchad|fetchads|onadloaded|requestInterstitialAd|showAd|loadAds|AdRequest|requestBannerAd|loadNextAd|createInterstitialAd|setNativeAd|loadBannerAd|loadNativeAd|loadRewardedAd|loadRewardedInterstitialAd|loadAds|loadAdViewAd|showInterstitialAd|shownativead|showbannerad|showvideoad|onAdFailedToLoad)\(\N*\)V).*?\.end method",
    "Replace Regex": "#"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 11",
    "Search Regex": "(\.method\N*(public|private|static)\s+(?!abstract|native)\N*loadad\(\N*\)V)",
    "Replace Regex": "$1\n\nreturn-void"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 12",
    "Search Regex": "(\.method\N*(public|private|static)\s+(?!abstract|native)\N*loadAd\(\N*\)Z)",
    "Replace Regex": "$1\n\nconst/4 v0, 0x0\n\nreturn v0"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 13",
    "Search Regex": "(invoke(?!\N*(close|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop))\N*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/\N*>(\N*(load|show)\N*)\(\N*\)Z)",
    "Replace Regex": "#"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 14",
    "Search Regex": "(invoke(?!\N*(close|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop))\N*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/\N*>(\N*(load|show)\N*)\(\N*\)V)",
    "Replace Regex": "#"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 15",
    "Search Regex": "(invoke(?!\N*(close|Deactiv|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop|Throw))\N*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/\N*>(request\N*|(\N*(activat|Banner|build|Event|exec|header|html|initAd|initi|JavaScript|Interstitial|load|log|MetaData|metri|Native|(can|get|is|has|was)Ad|propert|report|response|Rewarded|show|trac|url|(fetch|refresh|render|video)Ad)\N*)|\N*Request)\(\N*\)Z)",
    "Replace Regex": "#"
    },
    {
    "Enabled": "True",
    "Name": "Ads Remove 16",
    "Search Regex": "(invoke(?!\N*(close|Deactiv|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop|Throw))\N*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/\N*>(request\N*|(\N*(activat|Banner|build|Event|exec|header|html|initAd|initi|JavaScript|Interstitial|load|log|MetaData|metri|Native|onAd|propert|report|response|Rewarded|show|trac|url|(fetch|refresh|render|video)Ad)\N*)|\N*Request)\(\N*\)V)",
    "Replace Regex": "#"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 17",
    "Search Regex": "(invoke(?!\N*(close|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop))\N*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/\N*>((\N*(Banner|initAd|Interstitial|load|Native|(can|get|has|is|was)Ad|Rewarded|show|(fetch|refresh|render|request|video)Ad)\N*))\(\N*\)Z)",
    "Replace Regex": "#"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 18",
    "Search Regex": "(invoke(?!\N*(close|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop))\N*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/\N*>((\N*(Banner|initAd|Interstitial|load|Native|onAd|Rewarded|show|(fetch|refresh|render|request|video)Ad)\N*))\(\N*\)V)",
    "Replace Regex": "#"
    },
    {
    "Enabled": "False",
    "Name": "Ads Remove 19",
    "Search Regex": "\"(http\N*|//\N*)(61\.145\.124\.238|/2mdn\.net|-ads\.|\.5rocks\.io|\.ad\.|\.adadapted|\.admitad\.|\.admost\.|\.ads\.|\.aerserv\.|\.airpush\.|\.batmobil\.|\.chartboost\.|\.cloudmobi\.|\.conviva\.|\.dov-e\.com|\.fyber\.|\.mng-ads\|\.mydas\.|\.predic\.|\.talkingdata\.|\.tapdaq\.|\.tele\.fm|\.unity3d\.|\.unity\.|\.wapstart\.|\.xdrig\.|\.zapr\.|\/ad\.|\/ads|a4\.tl|accengage|ad4push|ad4screen|ad-mail|ad\.\N*_logging|ad\.api\.kaffnet\.|ad\.cauly\.co\.|adbuddiz|adc3-launch|adcolony|adfurikun|adincube|adinformation|adkmob|admax\.|admixer|admob|admost|ads\.mdotm\.|adsafeprotected|adservice|adsmogo|adsrvr|adswizz|adtag|adtech\.de|advert|adwhirl|adz\.wattpad\.|alimama\.|alta\.eqmob\.|amazon-\N*ads|amazon\.\N*ads|amobee|analytics|anvato|appboy|appbrain|applovin|applvn|appmetrica|appnext|appodeal|appsdt|appsflyer|apsalar|avocarrot|axonix|banners-slb\.mobile\.yandex\.net|banners\.mobile\.yandex\.net|brightcove\.|burstly|cauly|cloudfront|cmcm\.|com\.google\.android\.gms\.ads\.identifier\.service\.START|comscore|contextual\.media\.net|crashlytics|crispwireless|criteo\.|dmtry\.|doubleclick|duapps|dummy|flurry|fwmrm|gad|getads|gimbal|glispa|google\.com\/dfp|googleAds|googleads|googleapis\.\N*\.ad-\N*|googlesyndication|googletagmanager|greystripe|gstatic|heyzap|hyprmx|iasds01|inmobi|inneractive|instreamatic|integralads|jumptag|jwpcdn|jwpltx|jwpsrv|kochava|localytics|madnet|mapbox|mc\.yandex\.ru|media\.net|metrics\.|millennialmedia|mixpanel|mng-ads\.com|moat\.|moatads|mobclix|mobfox|mobpowertech|moodpresence|mopub|native_ads|nativex\.|nexage\.|ooyala|openx\.|pagead|pingstart|prebid|presage\.io|pubmatic|pubnative|rayjump|saspreview|scorecardresearch|smaato|smartadserver|sponsorpay|startappservice|startup\.mobile\.yandex\.net|statistics\.videofarm\.daum\.net|supersonicads|taboola|tapas|tapjoy|tapylitics|target\.my\.com|teads\.|umeng|unityads|vungle|zucks)\N*\"",
    "Replace Regex": ""127.0.0.1""
    }
]

这是我的Python代码:

import json
import re  
import os

def load_rules(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        return json.load(file)

def regex_search(directory, rules):
    file_count = 0
    matched_file_count = 0
    total_match_count = 0  
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith(".smali"):
                file_count += 1
                file_path = os.path.join(root, file)
                with open(file_path, 'r', encoding='utf-8') as content_file:
                    content = content_file.read()
                    file_has_match = False
                    for rule in rules:
                        if rule["Enabled"] == "True":
                            search_regex = rule.get("Search Regex")
                            if search_regex:
                                matches = re.findall(search_regex, content) 
                                total_match_count += len(matches) 
                                if matches:
                                    file_has_match = True
                                    print(f'Match found in {file_path}')
                    if file_has_match:
                        matched_file_count += 1
                        
    print(f'Total number of files processed: {file_count}')
    print(f'Total number of files with matches: {matched_file_count}')
    print(f'Total number of matches found: {total_match_count}')

def main():
    json_file = 'ApkToolkitSnR.json'  
    directory = 'temp/decompile_inst' 
    rules = load_rules(json_file)
    regex_search(directory, rules)

if __name__ == "__main__":
    main()

您能否帮助我纠正这些模式,以便它们在与 Python 一起使用时不会抛出错误?

任何帮助将不胜感激。谢谢!

我尝试转义json文件中的正则表达式,但是转义后,它的功能不一样。

编辑:重新库不支持

\N*
.. 也许不支持其他一些模式

android python-3.x regex apk
1个回答
0
投票

不确定以下代码是否适合您:

import json
import re

# Sample JSON data with regex patterns
json_data = [
    {
        "Enabled": "False",
        "Name": "Ads Remove 1",
        "Search Regex": "(invoke(?!.*(close|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop)).*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle).*>((.*(Banner|initAd|Interstitial|load|Native|(can|get|has|is|was)Ad|Rewarded|show|(fetch|refresh|render|request|video)Ad).*))\\(.*\\)Z\\r\\n\\r\\n\\s++)move-result\\s++([pv]\\d+)",
        "Replace Regex": "const/4 $9, 0x0"
    },
{
        "Enabled": "False",
        "Name": "Ads Remove 2",
        "Search Regex": "(invoke(?!.*(close|Deactiv|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop|Throw)).*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle).*>(request.*|((.*(activat|Banner|build|Event|exec|header|html|initAd|initi|JavaScript|Interstitial|load|log|MetaData|metri|Native|(can|get|is|has|was)Ad|propert|report|response|Rewarded|show|trac|url|(fetch|refresh|render|video)Ad).*))|.*Request)\\(.*\\)Z\\r\\n\\r\\n\\s++)move-result\\s++([pv]\\d+)",
        "Replace Regex": "const/4 $9, 0x0"
    },
{
        "Enabled": "False",
        "Name": "Ads Remove 3",
        "Search Regex": "(invoke(?!.*(close|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop)).*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle).*>((.*(load|show).*)\\(.*\\)Z)\\r\\n\\r\\n\\s++)move-result\\s++([pv]\\d+)",
        "Replace Regex": "const/4 $6, 0x0"
    },
{
        "Enabled": "False",
        "Name": "Ads Remove 4",
        "Search Regex": "(invoke.*loadAd\\(.*\\)[VZ])",
        "Replace Regex": "#"
    },
    {
        "Enabled": "False",
        "Name": "Ads Remove 5",
        "Search Regex": "(invoke.*gms.*>(loadUrl|loadDataWithBaseURL|requestInterstitialAd|showInterstitial|showVideo|showAd|loadData|onAdClicked|onAdLoaded|isLoading|loadAds|AdLoader|AdRequest|AdListener|AdView).*V)",
        "Replace Regex": "#"
    },
    {
        "Enabled": "False",
        "Name": "Ads Remove 6",
        "Search Regex": "invoke-.*\\{.*\\}, L.*;->(loadAd|requestNativeAd|showInterstitial|fetchad|fetchads|onadloaded|requestInterstitialAd|showAd|loadAds|AdRequest|requestBannerAd|loadNextAd|createInterstitialAd|setNativeAd|loadBannerAd|loadNativeAd|loadRewardedAd|loadRewardedInterstitialAd|loadAds|loadAdViewAd|showInterstitialAd|shownativead|showbannerad|showvideoad|onAdFailedToLoad)\\(.*\\)V",
        "Replace Regex": "#"
    },
    {
        "Enabled": "False",
        "Name": "Ads Remove 7",
        "Search Regex": "invoke-.* \\{.*\\}, Lcom.*;->requestInterstitialAd\\(.*\\)V|invoke-.* \\{.*\\}, Lcom.*;->loadAds\\(.*\\)V|invoke-.*\\{[v|p]\\d\\},.*Lcom/facebook.*;->show\\(.*\\)V|invoke-.*\\{[v|p]\\d\\},.*Lcom/google.*;->show\\(.*\\)V",
        "Replace Regex": "#"
    },
{
        "Enabled": "False",
        "Name": "Ads Remove 8",
        "Search Regex": "\"(http.*|//.*)(61\\.145\\.124\\.238|\\-ads\\.|\\.ad\\.|\\.ads\\.|\\.analytics\\.localytics\\.com|\\.mobfox\\.com|\\.mp\\.mydas\\.mobi|\\.plus1\\.wapstart\\.ru|\\.scorecardresearch\\.com|\\.startappservice\\.com|\\/ad\\.|\\/ads|ad\\-mail|ad.*_logging|ad\\.api\\.kaffnet\\.com|adc3\\-launch|adcolony|adinformation|adkmob|admax|admob|admost|adsafeprotected|adservice|adtag|advert|adwhirl|adz\\.wattpad\\.com|alta\\.eqmob\\.com|amazon.*ads|amazon.*ads|amobee|analytics|applovin|applvn|appnext|appodeal|appsdt|appsflyer|burstly|cauly|cloudfront|com\\.google\\.android\\.gms\\.ads\\.identifier\\.service\\.START|crashlytics|crispwireless|doubleclick|dsp\\.batmobil\\.net|duapps|dummy|flurry|gad|getads|google\\.com\\/dfp|googleAds|googleads|googleapis.*\\.ad.*|googlesyndication|googletagmanager|greystripe|gstatic|inmobi|inneractive|jumptag|live\\.chartboost\\.com|madnet|millennialmedia|moatads|mopub|native_ads|pagead|pubnative|smaato|supersonicads|tapas|tapjoy|unityads|vungle|zucks).*\"",
        "Replace Regex": "\"127.0.0.1\""
    },
    {
        "Enabled": "False",
        "Name": "Ads Remove 9",
        "Search Regex": "ca-app-pub-\\d{16}/\\d{10}",
        "Replace Regex": "ca-app-pub-0000000000000000/0000000000"
    },
    {
        "Enabled": "False",
        "Name": "Ads Remove 10",
        "Search Regex": "(\\.method.*\\(loadAd|requestNativeAd|showInterstitial|fetchad|fetchads|onadloaded|requestInterstitialAd|showAd|loadAds|AdRequest|requestBannerAd|loadNextAd|createInterstitialAd|setNativeAd|loadBannerAd|loadNativeAd|loadRewardedAd|loadRewardedInterstitialAd|loadAds|loadAdViewAd|showInterstitialAd|shownativead|showbannerad|showvideoad|onAdFailedToLoad\\)\\(.*\\)V).*?\\.end method",
        "Replace Regex": "#"
    },
    {
        "Enabled": "False",
        "Name": "Ads Remove 11",
        "Search Regex": "(\\.method.*\\(public|private|static\\)\\s+(?!abstract|native).*loadad\\(.*\\)V)",
        "Replace Regex": "$1\\n\\nreturn-void"
    },
    {
        "Enabled": "False",
        "Name": "Ads Remove 12",
        "Search Regex": "(\\.method.*\\(public|private|static\\)\\s+(?!abstract|native).*loadAd\\(.*\\)Z)",
        "Replace Regex": "$1\\n\\nconst/4 v0, 0x0\\n\\nreturn v0"
    }
]

# Function to test regex patterns
def test_regex_patterns(data):
    for item in data:
        try:
            re.compile(item["Search Regex"])
            print(f"Regex pattern for {item['Name']} is valid.")
        except re.error as e:
            print(f"Regex pattern for {item['Name']} is invalid: {str(e)}")

# Run the test
test_regex_patterns(json_data)
© www.soinside.com 2019 - 2024. All rights reserved.