import scala.collection.mutable import scala.util.matching.Regex import scala.collection.mutable.ListBuffer object MyClass { val FINANCE_REGEX = "(rzrpay|installment|finance|paytm|account balance|bank|debited|card|credited|debit|credit|american express|amex|icici|hdfc|sbi|pnb|fixed|deposit|property|estate|sell|central|market|invest|investment|buy|lacs|emi|personal loan|loan|investor|autopay|add[ ]{0,1}money)|saving account|over[ ]{0,1}draft|car[ ]{0,1}loan|home[ ]{0,1}loan|interest rate|[ ]{1,2}uan[ ]{1,2}|epfo|pos[ ]{1,2}|gold loan".r val HEALTH_REGEX = "(tablets|health|weight|blood|test|medicines|medicine|disease|loss|oximeter|purifier|homeopathy|homeopathic|ayurvedic|1mg|apollo)".r val EDUCATION_REGEX = "(scholarship|education|exam|quiz|tutorial|course|school|college|result)".r val TRAVEL_REGEX = """\b(cabs|pool|uber|ola|ride|ubergo|share|city|cab|pnr|booking|flight|hotel|train|blusmart|rapido)\b""".r val INSURANCE_REGEX = """\b(tataaig|icici lombard|policy|care health|life insurance|health|premium)\b""".r val ENTERTAINMENT_REGEX = """\b(netflix|hotstar|zee5|mxplayer|sonyliv|prime|zee|disney[ ]{0,1}hotstar|voot|hotstr|altbalaji|discovery)\b""".r val TELECOM_REGEX = "(telecom|airtel|jio|vodafone|idea|unlimited|recharge|cellular|broadband|bsnl|mtnl)".r val UTILITY_REGEX = """\b(fuel|petrol|diesel|electricity|meter read|water|mngl|gail|gas |cylinder|apepdcl|bescom|electric|pgvcl|dgvcl|uhbvn|dhbvn|jvvnl|jdvvnl|tsspdcl|dvvnl|mvvnl|puvvnl|pvvnl|kesco|wbsedcl|mppkvvcl|bpcl|bwssb|torrent power)\b""".r val FASHION_REGEX = """\b(bata|nike|adidas|woodland|reebok|lotto|sketcher|puma|van[ ]{0,1}heusen|redtape|arrow|peter england|crocs|liberty|hidesign|lee[ ]{0,1}cooper|paragon|khadim|fila|lancer|red[ ]{0,1}chief|lakhani|provogue|mochi|gucci|chanel|versace|allen solly|biba|calvin klein|fabindia|flying[ ]{0,1}machine|h&m|john[ ]{0,1}players|levi|louis[ ]{0,1}philippe|monte[ ]{0,1}carlo|mufti|pepe jeans|park[ ]{0,1}avenue|raymond|u.s. polo assn|united[ ]{0,1}colors[ ]{0,1}of[ ]{0,1}benetton|ucb|benetton|w for woman|wrangler|zara|zodiac|giovani|indianterrain|lp[ ]{0,1}jeans|indigo nation|celio|color[ ]{0,1}plus|parx|numero[ ]{0,1}uno|gini[ ]{0,1}&[ ]{0,1}jony|global[ ]{0,1}desi|mother[ ]{0,1}earth|soch|aurelia|label ritu kumar|libas|zink[ ]{0,1}london|madame|marie[ ]{0,1}clarie|vero[ ]{0,1}moda|hrx|ywc|being[ ]{0,1}human|skult|ecko[ ]{0,1}unltd|spunk|all about you|nush|bewakoof|chumbak|caprese|lavie|baggit|peperone|fossil|wildcraft|maxima|rolex|casio|swatch|emporio armani|sonata|timex|fastrack|titan|roadster|daniel klein|giordano|bag|purse|jeans|trouser|perfume|shoe|sandal|fashion|myntra|fbb|fashion|amazon|flipkart|clothes|gifts|festive|season|sale|jewellery|shopping|shop|voucher|home cent|pantaloon|lenskart)\b""".r val FOOD_AND_GROCERY_REGEX = """\b(food|dominos|pizza|hut|cheese|medium|pizza[ ]{0,1}hut|food|veg|groceries|burger|sandwhich|food[ ]{0,1}panda|grofers|bazaar|milkshake|baker|cake|cookies|swiggy|zomato|blinkit|bigbasket|amazon[ ]{0,1}fresh|insta[ ]{0,1}mart|super[ ]{0,1}market|hyper[ ]{0,1}market)\b""".r val FOOD_SENDER_REGEX = """.*(dominos)""".r val BANK_SENDER_REGEX = """((bk-|bk)(?!.*rummy|.*rmy|.*rum|.*win|.*phrmsy|.*goibib|.*vonemg))(bnk|bank|sbi|kota|icic|scisms|umobil|union|iprsms|paytmb|ujjivn|upi|boiind|idfc|bob|kvb|hdfc|mrlpos|iobchn|boi|synmob|fromsc|sib|pnb|indus|canbnk|rblcrd|csb|dbs|ktk|uco|fncare|esaf|bdn|sbm|citi|ipb|axis|20001|100022|100026|100075|100811|101979|106486|107001|107750|110111|111000|111014|111101|111102|111103|111104|111105|111106|111107|111108|111109|111444|111540|111555|111611|111666|111888|111904|111917|111921|111979|112000|113000|113311|114411|115551|115651|116001|116077|116611|118467|119351|120011|120012|120017|121111|121200|121314|121906|122333|123323|123409|126000|126001|126002|126003|126666|126995|127777|128119|130000|130001|130011|130012|130013|131415|132132|133333|140001|140011|140285|140601|141516|142019|142421|142424|143242|144806|146587|150000|150001|150773|151053|151234|151892|151899|151974|152484|154321|154987|155551|158412|159159|160001|171717|172586|177177|180012|180224|180597|180797|180897|181200|181212|181818|181964|184001|185241|188888|189766|190000|191600|191607|192518|199199|199802|650017|650137|acblho|aceplc|adarsh|adbccb|aeitsm|agmits|agvcbs|airbse|airbsi|ajusbj|akhand|akolab|almora|ambuja|amexbp|amexbt|amexep|amexin|amexsr|apgbho|apgbit|apgecm|aphoat|apnapr|apnatr|aprbho|apscob|apssbn|asbalt|atmmon|atmmvs|atmsms|atmtad|atpccb|aubmsg|aubsms|audost|auitsm|axpops|axpvpn|axsfi|axsfin|azpssb|basava|basoda|bgvcbs|bhabhr|bhagni|bhgini|bmshab|bmsnan|bndnhl|bnsbl|bomsct|bpmctr|bramha|brdsec|brimps|brkgbd|brkgbm|brkgbs|brkgbx|bsbbmt|bsbltd|bucblb|bucbrj|buland|bupgbb|bupgbm|bupgbx|burban|bwrucb|bzrcmb|cbguna|cbiotp|cbrewa|cbskub|cbsltd|cbstgb|ccbbtl|ccbchw|ccbdta|ccbdws|ccbfaz|ccbgur|ccbgwl|ccbjmu|ccbltd|ccbmor|ccbrjg|ccbrop|ccbsas|ccbsdh|ccbsgr|ccbshr|ccbsni|ccbstn|ccbsvp|ccbtkg|cccdel|cchrir|cconln|ccpcah|ccpccn|cdsafe|cfoban|chadcc|chamco|choins|ciralt|cmphyd|cmsrbi|cnsblh|cocbng|comcbl|costal|covigl|crgbad|ctmugm|ctrccb|ctzens|cubfst|cubltd|cubotp|cubsms|cveluc|dahodb|dbalrt|dcbdcb|dcbgzb|dcbmbd|dcbmdl|dcbmrt|dccblk|dccbln|dgbsms|dgmgzb|dgmgzd|dgmrbd|dharcb|dharma|ditatm|dithlp|dmcdhd|dmsalt|dpcsdx|ducbda|dundcb|dunica|easfbt|ebtalt|ecompw|edsadm|emlotp|equtas|equtat|equtax|esfuat|exclck|fastdv|fchrge|fdbotp|fedadv|fedfin|fedotp|fgmchn|fgmmum|finohr|finoin|finopb|fmcluc|fsloct|fzkccb|gbcbbn|gmccdc|gmpers|gmsmad|gnddcc|gnsblt|gppjsb|gppsbl|gramen|gscloc|gtrccb|gucbsi|gucbsr|gucbtr|gujamb|gvnsbl|harcob|haridc|hastib|hdfset|hdftst|hnsblh|hocppc|hohrms|horrmd|hosrdd|hpgsms|hrmscc|hsbcex|hsbcim|hsbcin|hydccb|iapprv|iciemp|iciotp|icmtrg|idbidl|idfsit|idrnsb|idrsnb|imahyd|ipshoi|ipshot|isecld|isrvce|itcomp|itrisk|itrsnc|itsdel|itslho|jalaun|jalore|janatr|janatx|jansva|jantha|jaolib|jccb|jgramn|jivaji|jkbfsl|jkcard|jkgram|jkgrmn|jkgrnb|jksblm|jlrnsb|jmsblp|jnjcbl|jnsbbm|jnsbju|jnseva|jsbgon|jsblhg|jsblho|jsblpn|jsbryp|jskbbg|jskbcp|jskbda|jskbhb|jskbjh|jskbjp|jskbms|jskbnp|jskbrs|jskbrt|jskbsd|jskbsj|jskbuj|jskbvi|kaijsb|kccbps|kccdwd|kcdccb|kcmeet|kcmsgs|kdcbak|kdccbl|kdgccb|kdpccb|khedab|khladm|kkdccb|kmbcbl|kmcblt|knbotp|knsblk|kotsbn|koyana|kpcobl|kpmccb|kriccb|krushi|ktccbl|kubotp|kubpro|kubsms|kubtrn|kucbot|kucbtr|kunsbb|kunsub|kvgecm|lctscs|ldmfbd|lhoabu|lhoban|lhogmi|lhokol|lhopat|liccrd|lmpucb|lvbsms|mabhyd|maloji|mamcob|marscb|mayani|mbimps|mbtest|mcapex|mcbatm|mcbltd|mcbnsk|mcbotp|mcbtrn|mcdccb|mcublh|mdknsb|mdlucb|megrrb|mgbsms|mhavir|mhsjpn|miamex|miecbl|mimtmx|misdep|modnag|morada|mpapex|mpaucb|mpssbn|mrbcbs|msblpn|msbltd|mucatm|mucblp|mucbnp|muccbs|mucinb|mucinf|mucipo|mucmbs|mvcbls|myamex|myippb|nabard|njmsbl|nkdccb|npcmpl|nsbetw|nscbak|nsdlcd|nsdlpb|nsdlrm|nstcbl|nucbrm|nutanb|nvshup|nzbccb|obccbs|obcinb|obcols|obcotp|obcsms|obcsvc|obctxn|otpskn|palusb|panchb|panipt|patanb|patscb|paytmb|payzap|pbgbbn|pbgkol|pbgmpb|pcbdlk|pgbsms|pitdcc|pnnsbl|ppgdep|primeb|psbltd|publtd|pucbll|pucblm|pucblp|pvijay|rajnag|ramdcc|ratnak|ravisc|rbisay|rbopen|rcbrng|rcmsbn|rimumb|rmmbnr|rnbasb|rnbcrm|rnsbal|rnsbbc|rnsbld|rnsblt|roatpm|rokdpa|rokdri|rokrnl|roludh|rondyl|ronell|ronelr|roongl|rorjpa|rorurl|rotvpm|roudpi|rovarn|rpcobl|rsblpt|sadhna|sainik|samlms|sammco|samsah|sandur|sanmti|sarnsb|sasccb|savlip|sbalrt|sbbjnb|sbcdre|sbcwms|sbdbtl|sbdcog|sbecom|sbepay|sbereg|sberin|sberms|sbfiah|sbfimf|sbgalr|sbgitc|sbglms|sbgmbs|sbgppc|sbhart|sbhigh|sbhinb|sbhrms|sbjsms|sblcpc|sbllms|sblsol|sblspc|sbocas|sbpbbu|sbpinb|sbracc|sbrlms|sbrwdz|sbtinb|sbwlth|sbyono|scdccb|scopbl|scublt|sdccbl|sdccbs|sgbbti|sgmcbl|sgmucb|shahub|shbind|shgsms|shsblh|sidbib|siwanb|sjsblh|sknsbl|slmsbl|smcblt|smfltd|smgpay|smucbl|smucbs|snbhmt|sncobl|snsbls|socinc|spcbak|sprcrd|sprofr|srkcob|sryltd|ssbfnk|ssbnag|ssbnbl|ssbpun|sscore|ssksbh|ssksbp|ssksbt|sssbnb|stcblr|stella|stnsbl|sucbls|sucnag|sudhab|sudico|suprna|suratb|sussbn|sutexb|suvkas|svcinf|svctxn|swdept|swmucb|swnccb|sybgov|sydbtl|tancbl|tbcoop|tbnsbl|tbtcob|tcbmeh|tdancb|tdccbe|tdcell|tehbik|tgbatm|tgbcbs|tgbinb|tgbmbs|tgbtxn|tgdcbt|thiruv|thnsbl|tjccbl|tjmsbl|tjsbpm|tjsbsb|tjsbvv|tkcubl|tkpcbl|tktccb|tkucbl|tmbfst|tmbotp|tmbsms|tmccob|tmnsbl|tmscht|tmucbl|tnbltd|tnjcbl|tnjmsb|tnmcbl|tnsblt|trmucb|tucbld|tvpcbl|ubisms|ucbdhn|ujvnbp|ukashi|umacob|umucbl|unixce|utklgb|utkmis|utksfb|uucbud|uunsbl|valscb|vikasb|vmcbdc|vnsbbr|vnsblk|vspccb|vuvsbj|washim|wglccb|wmbsms|wyddcb|yesbcc|yesbcm|yespay|yucbly|zsagra|zsbgzb|zsbrmp)""".r val EDUCATION_SENDER_REGEX = """(ajtrst|aakash|333222|askedu|edufun|abhaya|313545|313582|aceahm|acebbs|aceblr|acebpl|acechn|acedel|aceeng|acehyd|acekkp|acekol|acelko|acepat|acepun|acetpt|acevja|acevsp|abwam|adyant|acagra|agracg|ahduni|aulibe|alethi|ajsahd|ansalu|anshed|asenhr|archad|akarwa|arpita|ntanet|ntaugc|ausadm|ausnam|aryait|aryamn|reapad|dpsgkp|avcceg|avccol|avcptc|yocket|sabari|bjmcad|brbmsb|brbsch|krsnlm|riaigl|basedu|betsch|benetg|benetu|stbcsn|misajm|321456|336200|bknmuj|362020|basyam|bdsscs|bhavitha|bjcspt|brofss|bsebpt|biowel|wstcot|bosemn|cincmp|hkmesl|iramdm|stsvio|btdelo|bodhis|edreka|orcamb|cbcitmb|cambrg|cskbok|cmceit|imtweb|334455|cpsajm|cfdavs|333777|cuaccd|cuacco|cuftid|cuotpi|cupayt|cuuniv|chrust|378945|chayae|cracku|chtkra|cjsgrl|adniet|drniet|nietgn|tpniet|ivpsad|ivpsrh|cldnia|clgdna|credcc|cresor|ednati|educat|clgpnd|mahedu|prctly|cotunv|cpaara|cpblyr|cpmuzf|cpnawd|cpsmpr|cresnt|kvkkop|dalycl|dpsmak|dpssag|depaul|dpsind|dpsklp|303030|dpsfbd|dpsgdn|dpsgfb|dpsggn|dpsgin|dpsgmr|dpsgpv|dpsgsl|dpsgvn|fbdpsg|dpsngp|dpsmhn|dsertk|dharam|dhyeya|dpcoll|dpschl|proscl|prschl|edudel|dvetmh|dbppat|algapa|umsagr|drbamu|dpuayu|dpubio|dpucnt|dpuden|dpudit|dpugbs|dpuhom|dpuidl|dpuiit|dpumed|dpunsg|dpuphy|dpuuni|dmzsms|dreamz|esconv|epsajm|clgsms|easysm|schsms|scshop|topper|iqrahr|iqraki|iqrasw|montes|engbol|engrtr|etoosi|evrshn|educfe|emilly|emjira|emlead|emsccc|emucfe|exmkcc|extmks|bfschl|skillu|flipln|flplrn|flpvid|300003|glxybk|pgbbic|acejdh|gdgaya|geehos|geemed|geetan|geeudr|geeuni|gmchgu|gbtech|gmbdes|gmucol|gmumba|gmuotp|gmupes|gmuuni|sgtugc|cdabrd|cdgnrc|cdjims|cdmbbs|cldapp|cldkho|cldksu|cldsms|cldsou|jimsdl|150161|331111|ghrcam|ghruam|globle|neevfi|oxford|rgiadm|jpipsn|jpisbp|jpisib|msjpis|myjpis|glsuni|goaled|stsgpr|nihmtd|colege|collge|glctvm|lawclg|lawtvm|gstsch|gteced|gjcmss|gjmysy|gshseb|gnanak|hamsav|cnslhr|hstesp|olethr|hkschl|hktrnz|353637|342444|iabrim|ikgptu|ptuexm|iactg|iactgb|iactgl|isagbl|isagl|isaglb|idpind|stpjjs|isfcbl|isfccs|isfctl|345344|igalig|igkrpt|ignahd|ignjmu|ignmdu|ignouk|ignour|ignouv|ignsms|igntvm|ignuni|ignunj|ignuvp|ignvat|igrcjp|igrckn|rcjodh|ignraj|induit|apguni|intuni|inurtr|jgnuni|osguni|ipemis|jacobs|jnssjh|ssgjhs|jipmer|jhsbbk|397840|jvwuni|jbreel|rdtens|jmsmkg|kdbpsg|kavery|kpsss|344733|kkeled|ksoumy|ksoure|ksourg|vcksou|kenndy|kgmueb|knowbb|klueee|kluerp|kluhyd|klulms|kluniv|kluvza|hksggc|kuhugc|krmmcs|lafoun|daysta|daystr|daysts|dssmnl|lmoisz|arlord|lotuse|cpcngp|nutanv|314159|sprngd|mahndr|mhendr|mhnpub|mskill|stport|mechyd|mefgir|mayoin|sndpni|msbkrd|mekota|motion|mtsion|mpsmgr|313354|velnex|velsms|myrank|bookbr|tsnnrg|hndhsp|hnhmrc|ngdsps|ngdssp|grflco|navnit|nppndv|nvneet|davfzd|neskol|newhis|nphelp|npsssd|csivcs|ipssnp|kkkids|lnnext|neipll|nexted|nextip|nextpr|nextqa|nextqt|nlptet|nlptsp|vvmstg|nfcihm|nimsur|300000|300300|345345|345678|edvnsb|nimtcl|nimted|nimtgr|nimtgz|nimtol|nimtrj|nimtsc|nimtsh|nimtun|dalmia|nirmal|thenib|nittem|noor|oakdal|mkhsan|ssisng|ppsuni|pagedu|parmcc|pesmba|pesuni|341900|planet|plaato|platoo|platos|pllato|medham|medtkr|pgichd|ppsmsd|icevlr|arpmlc|arpscl|hrpcop|hrpiop|hrpjrc|hrpoff|mrpmil|mrppri|rciper|rcpacs|rcpbed|rcpcom|rcpcop|rcpded|rcpemj|rcpeng|rcpiop|rcpoff|rcpppe|rcppri|rcpsci|sesoff|rkacad|sgsbgh|rrpotp|rrpsch|engism|rgsnoi|rdkids|rbkeig|rbkgsb|rbkhhs|rbkiac|rbkisb|rbkpps|rbksmi|rbktpd|ceebpl|spuvvn|plksha|admisn|admrub|adreva|atreva|blreva|cetblr|inreva|kareva|proctr|revapu|revaru|revaun|rubcet|303132|331133|393030|agbsau|amityo|amityu|sprngf|rnredu|spauls|rosary|rvgadm|mactal|snpscs|scrhcs|shcsjg|sachrt|shtrst|spsksp|stanns|saintc|sclart|srvmdp|salwan|seesha|sdpsss|sndpne|stgghy|rhills|rngpit|sramco|spsajm|puexam|qpduop|sppuxm|unipun|unirev|uopcer|scherp|schpix|sclpad|cjmhss|clunys|dpsrke|drvssp|ipsncr|ipsvig|mbasnr|nireps|nricse|sasctc|school|shived|shmhss|stmark|aryaco|bedadm|ssesty|mbajim|rdiasr|rdpsnp|rdpspp|rdpsro|sgmint|333399|333999|399993|sharda|shcare|shhops|shospi|shtech|shuniv|sutech|ssdeck|snualt|snuotp|nalnda|dceggn|dgigri|bmhssv|shrigj|337878|cgcerp|cgcsms|smvdcn|ssdpsv|gyanay|vbpsby|vbpscl|sgidun|edifys|singhp|singhs|spsfee|spskol|spsptm|skyedu|sdschl|ssschl|ahvsan|anadmn|anagri|aneduc|anfish|anpccf|anzpsa|ceoani|dbrait|dcrsad|dhsani|dssani|empsms|police|scrani|sovtec|spiroedu|sprioneet|spring|sfcmbd|sqpind|manchu|sveint|svishy|vidyan|gmschl|skpcwc|trnmwn|trnslm|srmudr|ssj|sasdda|sassda|arnold|sjudes|372020|smpsns|stxblt|stanne|anselm|stchsm|stjvvt|smsjal|maryjr|smsmai|spc|stpius|thresa|sxsbok|sxsbti|sgeorg|stella|rbiita|srvczn|stmmcx|stmsms|storms|stormz|stdyiq|studiq|stepsy|sunflr|sbhbgn|sbhsct|sbsbgn|sbsing|sbssct|313213|398765|sunedu|sunton|suprme|svvred|sncbms|sngiag|snpsag|300001|300002|300004|300005|300006|333111|dteroa|asbind|agcbth|gkpsmb|brtsch|bsgseb|daffod|tegsch|thsroh|tlksch|prtsoc|mpschl|npschd|ncuggn|bpsalg|nfkbgs|tsvdpr|estacw|thgate|tpssms|351992|mytime|usiefi|umangg|uksmsg|umsmsg|unsmsg|upsmsg|uniapp|unicon|unicor|uniglb|uniglo|uniind|unimcx|uniotp|unisrs|unitip|univer|unient|unicom|smsuoc|upesad|upesen|upesun|upgrad|stmicl|peactc|vpeact|vpectu|vpssch|vpsscl|scjcol|sctsco|gpsajm|vecsms|tlcbhu|vpscbr|whjrcl|whjrco|wingss|ycmoud|yccacc|yccceo|yccdam|yccead|ycceao|yccear|yccecc|yccece|yccect|ycceee|ycceel|ycceet|yccefy|ycceit|ycceme|yccepa|ycclib|yccmis|yccsch|ycctpo|yhskol|zigyan|yucky)""".r val TRAVEL_SENDER_REGEX = """(carent|tntotp|tntott|tntrml|tntrsl|abhnav|advcar|crowne|aieoff|aiffpp|aihccb|aihccd|aiiocc|aildit|ailerp|ailffp|ailsec|aioccd|airind|airmob|aisecy|cmssai|18753|aaceoc|arasia|turyaa|ajikya|alegra|amaalt|fcslag|leelag|ashokt|atlass|notifi|ayusht|btaipl|carclb|bhartr|bhratr|birdin|chckin|laundr|odigos|roseat|hotels|brdcar|ceebrs|chougl|functy|kpykrm|clrtrp|cltrip|cfmtkt|cnftkt|dellaa|denebp|dpauls|dptcom|dptrav|superv|travls|emtcab|ezrent|ecrspn|ezidrv|ghotel|grvhtl|gvhotl|gtabus|797979|gotour|gokult|shanda|heenat|hellot|hplnet|hdtour|trvtgl|arcojp|811811|822822|833833|844844|855855|866866|877877|897564|899899|clrion|thleaf|733287|757575|goibib|igommt|redbus|stselr|yurbus|indigo|indoff|kachng|accord|justkt|kktrvl|kafila|travel|lordvt|711711|clubmh|clubmr|707070|mmtapp|mmtrip|mngalt|avisin|avisle|mountn|mtjind|myprop|narmda|ntrnnd|nayant|krshna|omhyrg|onsons|onssms|onswho|onswld|oyohms|oyohtl|oyorms|wedngz|747786|pacesi|pacetr|pnditl|pandrg|prgati|pridet|pushpk|questt|rajtrv|rajdhn|rajetr|ravitr|rudrks|srtrvl|sanjna|sbalaj|gurukr|siaops|skyway|sgclub|sgstyl|sgxprs|sjclub|spicej|ssinsu|trpulp|777777|strfsh|727272|750750|strhol|strmem|strotp|thccag|tannat|tsalit|vistar|tajmpm|tlebom|tmhdel|tphdel|vbtdwk|aonetr|arontr|arthrt|aryatr|benaka|cititr|evantr|excelt|geettr|infant|mrtbus|natctr|psnatr|rrlrtr|srismt|srvetr|sudhtr|sulttr|supaat|tajttr|vahana|vivega|viwint|insita|tparkz|tspice|trvlxp|tripot|trpoto|utvtcs|vanand|wlacom|wlpark|ayatra|yatraa|yogest|zenjit|700001|zoomcr|zoomer|olacab|aspcab|beecab|kkcabs|mancab|merucab|skycab|wticab|irctc)""".r val INSURANCE_SENDER_REGEX = """(111120|111121|111122|111124|ackoca|ackoce|ackoci|ackocs|ackogi|ackots|189654|aegonl|ahiins|aibplm|elphnt|smeins|alicil|aviotp|avivaa|avivab|avivac|avivai|bjazgi|bjazli|bsecur|baxagi|balife|baxali|111540|choins|cmsche|rbcont|rbmrkt|rbprom|renwby|rnwbuy|bimakr|bmakro|etlife|elites|emedon|esichd|esicho|esicip|esiemp|esihis|esistf|ensrti|exdlfe|exidli|fhplhy|fhptpa|fglife|futgen|gennxt|gextpw|gnnext|pwgext|pworld|134448|bizdmo|ddigit|gdigit|gdtrnr|jushnn|msgdgt|ospltd|hdfcgi|amhicl|hdfcpd|hdfcpn|hitpai|hlthxp|flipru|iciaum|icicip|ipruli|ipruuw|prukpi|prupsf|pstncy|132008|idbfed|idbifl|iflicl|iflics|iflimt|iflinb|iflips|iflirt|122001|itgico|itokio|indiaf|inidaf|iiiadm|iiicoi|iiiexm|iiigcm|iiijrn|iiilib|iiinws|iiiper|imheal|inmile|insure|kotakg|kotakl|lmkins|libgen|licind|mhdigi|mahins|mibghp|miblmr|mibotp|miposp|maibro|manins|mchicl|171202|imarsh|192152|447733|maruti|maxbup|maxagn|maxins|maxlhr|maxlif|maxlit|maxsld|mxlife|mdinda|medsav|nicind|niclcc|nicltd|nihero|bbpins|phstpa|pisirr|paytmi|metcom|metepd|metwel|pnbmet|pnbmpd|123458|132546|133673|133922|143256|153267|154326|156732|165342|200262|205738|342692|370122|448733|455129|499446|lifepb|motopb|pbauto|pbbike|pbcare|pbcars|pbchld|pbcomm|pbcore|pbcrit|pbcror|pbheal|pbhike|pbhlht|pbhlth|pbhtlh|pbinvt|pblife|pbmoto|pbrand|pbride|pbroam|pbropp|pbsmes|pbstax|pbsvng|pbterm|pbtour|pbtrad|pbtrav|pbtrip|pbtrms|pbtrve|pbwhel|pbzuae|plbzar|polbaz|polbhi|polcre|polfit|polfly|policy|poluae|polybz|termpb|tradpb|twpolb|101010|105050|120202|plictp|polcyh|polica|policx|pxhlsn|pxinfo|pxinpf|pxinvp|pxlici|pxtlic|plildg|pliltd|pibplm|prbtas|probit|takemy|tkmyin|tmyins|probus|quicki|rachin|143134|rgichr|112369|123658|rnlicl|rnlics|rnlict|relihi|rhlotp|rlgins|oneins|111200|roysun|rsgicl|rylsun|sbigen|sbilif|177777|177999|199977|sgiltd|136116|srilic|assure|mispsi|safety|smcins|smcpos|ssinsr|112266|starhi|talife|tatali|tagins|tmibas|oiclin|oicweb|ttibil|ttiyam|uiicho|vhchfs|vhelth|vhitpa|vhtpal|vhtpas|vidalh|vipulm|vipultpa|vmcare|vmctpa)""".r val TELCO_SENDER_REGEX = """(bsnlin|aanvit|aegist|airnet|aircrm|airivr|airsun|airson|aalive|smswld|unikbz|650001|650002|650003|650004|650005|650006|650007|650008|650009|650010|650011|650012|650139|airacs|airact|airadm|airalt|airamp|airanf|airapp|airbbi|airbdp|airbil|airccf|airccm|aircil|airclb|aircol|aircpd|aircws|airdar|airdba|airdea|airdlt|airdrl|airdrt|airdsl|airdue|airelk|aireln|aireoi|airexp|airfms|airgfr|airgnf|airicn|airihd|airinf|airino|airinr|airitm|airkci|airlms|airlne|airloc|airlpu|airlrn|airmis|airmnp|airmse|airnav|airnec|airnpd|airnst|airntw|airnwa|airnwb|airnwc|airoem|airopt|airord|airpab|airpde|airpin|airpmt|airppt|airptp|airpwd|airque|airrar|airrpa|airrpt|airrsg|airrtv|airsbl|airsep|airslf|airsnw|airsos|airstr|airsvb|airsvc|airszs|airtel|airthr|airtmo|airtrf|airtst|airtws|airufm|airunx|airupd|airupg|airvip|airvma|airvms|airvot|airvst|airweb|airwms|airwrk|alert|amitra|apinfo|aralih|arbind|archan|ardtec|areser|arkmys|armedp|armyfs|arpasi|arwapb|arwdth|arwfif|arwhrd|arwifi|arwimp|arwinf|arwret|arwsvc|ashoke|atdsa|atvpin|ctanow|cvhtun|dlinfo|emitrr|fworld|gmobil|livetv|myapps|mydala|omalrt|srisri|stinfo|tfarot|tialrt|wynked|650014|airsnd|impinf|bigvcl|infosm|ctplre|capews|cralrt|666610|666612|666620|dresol|drmsol|tdrmsl|tdsalt|etlcom|ebenhr|ebentm|ebenub|ebnsms|ebnwel|evolgn|exichg|harsht|henced|infotr|kstdct|spotct|tdsitl|634567|lkudth|ltdth|bsnltv|payguj|matrix|611973|clktoc|minalt|minavo|minfin|minotp|titest|vagent|vdialr|vmessg|vrfyno|hirech|mithrl|msdtel|tmines|trqmtx|mppolc|peggps|pertsl|102102|103103|104104|105105|105106|106106|107107|108108|109109|110110|111110|111115|111116|111117|111118|111211|111311|111411|111511|111711|111811|111911|112011|112111|112112|112511|112611|112711|112811|112911|113011|113111|113113|113211|113411|113511|113611|113711|113811|113911|114011|114111|114114|114211|114311|114511|114611|114711|114811|114911|115011|115111|115115|115211|115311|115411|115511|115611|115711|115811|115911|116011|116111|116116|116211|116311|116411|116511|116711|116811|116911|117011|117111|117117|117211|117311|117411|117511|117611|117711|117811|117911|118011|118111|118118|118211|118311|118411|118511|118611|118711|118811|118911|119011|119111|119119|119211|119311|119411|119511|119611|119711|119811|119911|120120|121121|124124|125125|126126|127127|128128|129129|130130|131131|142142|143143|144144|145145|146146|147147|148148|149149|150150|151151|152152|153153|154154|155155|156156|157157|158158|160160|161161|162162|163163|164164|165165|166166|166661|167167|168168|169169|170170|171171|172172|173173|174174|175175|176176|177771|178178|179179|180180|181181|182182|183183|184184|185185|186186|187187|188188|188881|189189|190190|191191|192192|192252|193193|194194|195195|196196|197197|198198|199991|200200|201201|202202|203203|204204|205205|206206|207207|208208|209209|210210|211211|212212|213213|214214|215215|216216|217217|218218|219219|220220|221221|221222|221322|221422|221522|221622|221722|221822|221922|222022|222122|222220|222221|222223|222224|222225|222226|222227|222228|222229|222322|222422|222522|222622|222722|222822|222922|223022|223122|223222|223223|223322|223344|223422|223522|223622|223722|223822|223922|224022|224122|224222|224224|224322|224422|224522|224622|224722|224822|224922|225022|225122|225222|225225|225322|225422|225522|225622|225722|225822|225922|226022|226122|226222|226226|226322|226422|226522|226622|226722|226822|226922|227022|227122|227222|227227|227322|227422|227522|227622|227722|227822|227922|228022|228122|228222|228228|228322|228422|228522|228622|228722|228822|228922|229022|229122|229222|229229|229322|229422|229522|229622|229722|229822|229922|230230|231231|232232|233233|234234|235235|236236|237237|238238|239239|240240|241241|242242|242424|243243|244244|245245|246246|247247|248248|249249|250250|251251|252252|252525|253253|255255|256256|257257|258258|259259|260260|261261|262262|262626|263263|264264|265265|266266|267267|268268|269269|270270|271271|272272|272727|273273|274274|275275|276276|277277|278278|279279|280280|281281|282282|282828|283283|284284|285285|286286|287287|288288|289289|290290|291291|292252|292292|292929|293293|294294|295295|296296|297297|298298|299299|301301|302302|303303|304304|305305|306306|307307|308308|309309|310310|312312|313131|313313|314314|316316|317317|318318|319319|320320|321321|323232|323323|324324|325325|326326|327327|328328|329329|330330|331233|331331|331333|331433|331533|331633|331733|331833|331933|332033|332133|332211|332233|332332|332333|332433|332533|332633|332733|332833|332933|333033|333133|333233|333330|333331|333332|333334|333335|333336|333337|333338|333339|333433|333533|333633|333733|333833|333933|334033|334133|334233|334333|334334|334433|334533|334633|334733|334833|334933|335033|335133|335233|335333|335335|335433|335533|335633|335733|335833|335933|336033|336133|336233|336333|336336|336433|336533|336633|336733|336833|336933|337033|337133|337233|337333|337337|337433|337533|337633|337733|337833|337933|338033|338133|338233|338333|338338|338433|338533|338633|338733|338833|338933|339033|339133|339233|339333|339433|339533|339633|339733|339833|339933|340340|341341|342342|343343|344344|346346|347347|348348|349349|350350|351351|352352|353353|353535|354354|355355|356356|357357|358358|359359|360360|361361|362362|363363|363636|364364|365365|367367|368368|369369|370370|371371|372372|373373|373737|374374|375375|376376|377377|378378|379379|380380|381381|382382|383383|383838|384384|385385|386386|387387|388388|389389|390390|391391|392252|392392|393393|393939|394394|395395|396396|397397|398398|399399|401401|402402|403403|404404|405405|406406|407407|408408|409409|410410|411411|412412|412856|413413|414141|414414|415415|416416|417417|418418|419419|421421|422422|423423|424424|425425|426426|427427|428428|429429|431431|432432|433433|434434|435435|436436|437437|438438|439439|440440|441244|441344|441441|441444|441544|441644|441744|441844|441944|442044|442144|442244|442344|442442|442444|442544|442644|442744|442844|442944|443044|443144|443244|443322|443344|443443|443444|443544|443644|443744|443844|443944|444044|444144|444244|444344|444440|444441|444442|444443|444445|444446|444447|444448|444449|444544|444644|444744|444844|444944|445044|445144|445244|445344|445444|445445|445544|445566|445644|445744|445844|445944|446044|446144|446244|446344|446444|446446|446544|446644|446744|446844|446944|447044|447144|447244|447344|447444|447447|447544|447644|447744|447844|447944|448044|448144|448244|448344|448444|448448|448544|448644|448744|448844|448944|449044|449144|449244|449344|449444|449449|449544|449644|449744|449844|449944|450450|451451|452452|453453|454454|455455|456456|457457|458458|459459|460460|461461|462462|463463|464464|465465|466466|467467|468468|469469|470470|471471|472472|473473|474474|475475|476476|477477|478478|479479|480480|481481|482482|483483|484484|484848|485485|486486|487487|488488|489489|490490|491491|492252|492492|493493|494494|494949|496496|497497|498498|499499|502502|503503|504504|505505|506506|507507|508508|509509|510510|511511|512512|513513|514514|515151|515515|516516|517517|518518|519519|520520|521521|522522|523523|524524|525252|525525|526526|527527|528528|529529|530530|531531|532532|533533|534534|535353|535535|536536|537537|538538|539539|540540|542542|543543|544544|545545|547547|548548|549549|550550|551255|551355|551455|554545|559955|560560|561561|562562|563563|564564|565565|565656|566566|568568|569569|570570|571571|572572|573573|574574|575575|575757|576576|577577|578578|579579|580580|582582|583583|584584|585585|585858|586586|587587|589589|590590|591591|592252|592592|593593|594594|595595|595959|596596|597597|598598|599599|604604|607607|608608|612612|614614|616616|617617|618618|619619|620620|621621|622622|624624|625625|626626|627627|628628|631631|633633|634634|635635|636636|637637|638638|641641|643643|644644|645645|646646|647647|648648|649649|650650|651651|652652|653653|654654|655655|656656|657657|658658|659659|661266|661366|661466|661566|661661|661666|661766|661866|661966|662066|662166|662266|662366|662466|662566|662662|662666|662766|662866|662966|663066|663166|663266|663366|663466|663566|663663|663666|663766|663866|663966|664066|664166|664266|664366|664466|664566|664664|664666|664766|664866|664966|665066|665166|665266|665366|665466|665544|665665|665666|665766|665866|665966|666066|666166|666266|666366|666466|666566|666663|666664|666665|666668|666669|666766|666866|666966|667066|667166|667266|667366|667466|667566|667666|667667|667866|667966|668066|668166|668266|668366|668466|668566|668666|668668|668766|692252|699990|699991|699992|699993|699994|699995|699996|699997|699998|777770|777771|777772|777773|777774|777775|777776|777778|777779|786786|792252|799990|799991|799992|799993|799994|799995|799996|799997|799998|807807|808080|808181|808808|809809|810810|812812|813813|814814|815815|816816|817817|818181|818818|819819|820820|821821|823823|824824|825825|826826|827827|828181|828282|828828|829829|830830|831831|832832|834834|835835|836836|837837|838181|838383|838838|839839|840840|841841|842842|843843|845845|846846|847847|848181|848484|849849|850850|851851|852852|853853|854854|856856|857857|858181|858585|858858|859859|860860|861861|862862|863863|864864|865865|867867|868181|868686|868868|869869|870870|871871|872872|873873|874874|875875|878181|878787|878878|879879|880880|881288|881388|881488|881588|881688|881788|881881|881888|881988|882088|882188|882288|882388|882488|882588|882688|882788|882882|882888|882988|883088|883188|883288|883388|883488|883588|883688|883788|883883|883888|883988|884088|884188|884288|884388|884488|884588|884688|884788|884884|884888|884988|885088|885188|885288|885388|885488|885588|885688|885788|885885|885888|885988|886088|886188|886288|886388|886488|886588|886688|886788|886886|886888|886988|887088|887188|887288|887388|887488|887588|887688|887766|887788|887887|887888|887988|888088|888181|888188|888288|888388|888488|888588|888688|888788|888880|888881|888882|888883|888884|888885|888886|888887|888889|888988|889088|889188|889288|889388|889488|889588|889688|889788|889888|889889|889900|889988|890890|891891|892252|892892|893893|894894|895895|896896|897897|898181|898898|898989|899990|899991|899992|899993|899994|899995|899996|899997|899998|899999|boafin|bofain|demooo|dltreg|ezesms|mtnldl|pinacl|pinbot|pincla|pincle|pinclg|pinclm|pincln|pinclp|pinncl|pinotp|pintel|ptspla|ptsplg|ptsplm|ptspln|ptsplp|regdlt|servic|tpaddp|qbwifi|qfwifi|qgwifi|611305|611625|active|altbmg|altisd|calert|cbrwds|ciinfo|clogin|cmsfrn|cnping|conect|connct|ddcare|fuplmt|gsmdba|hawkai|hrhelp|hrteam|hubvit|isdalt|ispccc|ispnms|ispnoc|itbill|mdtion|miscal|misdth|neuron|qfault|qtlinf|qtlmig|qtlnoc|sconct|smping|svispl|techct|telmet|teteam|timbmg|vccare|vicare|vicomm|visplt|vtlild|vtlnoc|vttpln|wciris|wecare|wifihs|spartn|dplusx|goamix|155223|600121|601121|602121|603121|604121|605121|610005|610006|610007|620001|620002|620003|620004|620005|620006|620007|620008|620009|620010|620011|620012|620013|620014|620015|620016|620017|620018|620019|620020|620021|620022|620023|620024|620025|620026|620027|620028|620029|620030|620031|620032|620033|620034|620035|620036|620037|620038|620039|620040|620041|620042|620043|620044|620045|620046|isocop|jioapp|jioarw|jiobal|jiodlt|jioect|jioeng|jioent|jiofbr|jiofce|jiofon|jiogms|jiogsa|jiogst|jiogte|jiohrc|jioimp|jioinf|jiokbc|jiolbs|jiomcc|jiomet|jionet|jionew|jionpr|jiopay|jioret|jiorly|jioshp|jioslp|jiosvc|jiosvy|jiotlk|jiotmt|jiowlt|jprime|lyfhlp|lyfsvc|mgetit|namste|reginf|rilinf|rsinfo|rstplr|rstraj|428161|mantra|sensel|660660|dgmate|dhlaaa|dhlexp|dpssch|emrind|ricohm|scindi|svmtpl|14530|612545|cnocmu|csoelt|csoldt|csolta|dbevnt|dobigg|entlab|entmkt|evdsms|imange|incdnt|inopss|inttbs|inttsl|italrt|itouch|myttbs|nocgsm|nochyd|nocmum|nocnod|nocpun|omcpun|qsmapp|smarto|smartt|smesls|smstac|suncrt|swpune|tacare|tatacs|tatele|tclsme|tdbsin|teamsa|testid|testlu|testtm|tlwifi|ttbscs|ttbsin|ttlbrb|ttldlt|ttlsme|ttlwfi|ttslin|wlnnoc|tpamma|tpcark|tpgpim|tskype|wimtse|idea|6554563|612345|varechrg|vzideainfo|vfcare)""".r val UTILITY_SENDER_REGEX = """(aavpng|aglind|aglonl|avdpng|avntka|pngaav|aglgas|amtgas|ashrwd|bwssb|bhpgas|brhate|bglgas|552222|bpclin|bpclms|bpcltd|bpcret|indgas|cplerp|goagas|brgovt|grngas|gujgas|hcgkce|hetram|dtplus|hpclis|hpclli|hpclpg|hpcpay|hpdbtl|hpgasa|hpgasc|hpgasd|hppays|hpswym|refuel|swayam|hmwssb|ioagpl|iglcaq|igldel|iglhrd|iglmkt|iglonm|igloth|jytgas|mmbhrt|mmpisa|cmwssb|mglltd|marwet|mitgas|bpcgas|ongcaa|pwngas|rjshri|shivpt|siggas|surgas|tajgas|goawrd|adanie|gcrdtp|aplecc|dapdcl|610610|621021|621221|640600|640601|640602|640603|640604|640605|640606|640607|640608|640609|640610|650000|660001|660330|670077|bsesrl|bsesrp|bsesyp|cspchr|cspdcl|cspgcl|csphcl|csptcl|apepdc|jplsms|kptldi|kptlhr|kptlpr|kescok|ksebit|msebpf|msedcl|npclbk|npclcc|npclop|npclot|bsphcl|tnpdcl|okayag|rpapps|rplgen|cmdspd|detcmd|tsplmc|tsspdc|tanged|tpddld|503315|tatapr|wbsedc|pgvcl|dgvcl|uhbvn|dhbvn|jvvnl|jdvvnl|tsspdcl|dvvnl|mvvnl|puvvnl|pvvnl|kesco|wbsedcl|mppkvvcl|bwssb)""".r val EPFO_SENDER_REGEX = """epfo""".r val WALLET_SENDER_REGEX = """(paytm|fchrge|mdkwik|npci|phonpe|gtsmpl|gsimpl|mobikw)""".r //account details //val ACC_NO_REGEX = """[0-9]*[Xx\*]*[0-9]*[Xx\*]+[0-9]{3,}""".r //val MOBILE_REGEX = """\s+([9876]{1}\d{9})[,.\s]{0,}?""".r val COMPETITOR_REGEX = """\b(moneytap|dhani|india lends|krazybee|kissht|hugo loan|kreditbee|nira|cashe|money view|fibe|smartcoin|home credit|lazypay|flexsalary|bajaj finserv|paymeindia|loantap|paysense|rupeeredee|stashfin|credy technologies|upwards|zestmoney|fullerton india|navi|ring)\b""".r //lvl2 regex val MOBILE_SMS_REGEX = """^(?!.*subscribed|.*once|.*received|.*pending|.*cancel|.*ignore|.*restart|.*unsuccessful)(?=.*recharge)(?=.*success|.*done).*$""".r val FOOD_SMS_REGEX = """(order|delivered)(track|thank)""".r val ORDER_SMS_REGEX = """\b(arriving today|amazon order|flipkart order|order placed|order no[.-:\s]{1,})\b""".r // val BANK_CREDIT_REGEX = """(received|credited|deposited|credit|deposit|cr on|cr with)""".r // val BANK_DEBIT_REGEX = """(sent|withdrawal|purchase|paid|debited|w/d|withdrawn|used|spent|debit|txn done|transfer|dr frm|dr with|cash wdl|atm wdl| charged with| ips\*)""".r val BANK_DEBIT_REGEX = """sent rs.(\s|\S)(\d|.\d)|have .* sent (?:inr|rs\.|inr\.|rs)|sent from your|(?:inr|rs\.|inr\.|rs)(\s)?\d{1,100}(\.\d{1,5})?(?<!will be) sent to|you have sent rs\.\d|debit(\s|\S)(?::rs|inr|rs\.|inr\.)|debit with amount|after debit of|debit of acct|autopay \(e-mandate\) successful|successfully processed payment of|has a debit by|\d is deducted from your|thank you for using.*debit card|txn of inr|had a debit (?:trxn|transaction|trans|txn|txrn)|(?<!already)(?<!not) used for (\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?|used at atm|(used on).*(\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?|dr for inr|(have|you) paid|\bdr for\b|\bdr to\b| paid (thru|at)|deducted for|(?<!to be )paid (?:inr|inr\.|rs|rs\.)(\s|\S)\d|you\'ve paid|(?<!otp for online )(?=purchase of).*(?=debit card)|debit card.*purchase worth|have made.*purchase (for|of)|(withdrawal (?!will be|aggregating|limit)(?<!every )(transaction|txn|of|fee|by cheque|with atm card))|(?!vie)w/d(?!ownload)|(has been|you've) withdrawn|(?<!every )spent\s?( for )?(\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?|(?<!every )(?<!/)(\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})? (was |has been )?(?<!every )spent|txn done|dr frm|dr with|(?<!unsuccessful )cash wdl|(?<!unsuccessful )atm wdl| charged with| ips\*|transfer of (rs\.|inr\.|rs|inr|)\d{1,100}\.\d{0,100} \w{0,100} (?!credited|to your)|transferred rs\.\d{1,100}\.\d{0,100}|transferred from|money transferred|had a to transfer|(rs\.|inr\.|rs|inr|)\d{1,100}(\.\d{0,100})? transferred (successfully)? to (?!your|you)|we've transferred.*from your account|(?<!auto |auto-)(?<!will be )(?<!will get )(?<!if )(?<!\bbe\b )debited (from|by|for|to|on|with|through|\bin\b|charges of|against)(?! will be)|(((?<!auto |auto-)(?<!will be )(?<!if )(\bdbt\b|debited) (rs )?(\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?(?! will be))|((\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?(?<!auto |auto-)(?<!will be )(?<!if )(is |has been )?debited(\(clearing\)|\(cash\)|\(trf\)|\@)?\s?(rs )?(?! will be)))|you\'ve sent|have sent rs\.|(transaction of).*(done on)|sent from your|deducted (?:inr|rs\.|inr\.|rs)|(you have transferred).*to (account|a/c|acct)|(has been)? debited successfully|tranferred from (your|you)|(transaction of (amount|amt)).*(is successful)|(txn|transaction) of (\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?.*(debit)|transaction on.*for (\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?.*(\bsuccessful\b)|bill.*of.*(\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?.*((have|is) received)|(bill payment of).*(\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?.*(received)|(card.*used at.*(txn|transaction) (\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?)|(\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?.*withdrawn|spent card.*(\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?|(?<!you have) received payment of (\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?|withdrawn(:| for)? (\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?|transaction number.*for (\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?.*by.*debit card|successful transfer of (\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?.*\bto\b|imps transaction for (\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}([.\-:{ ]{0,5})?.*(has been completed)""".r val BANK_CREDIT_REGEX = """credit for ((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?|credit transaction of|(?:a/c|account no.)(\s|\S)x{1,8}\d{1,8}(\s|\S)(?:credit)|is credit by|a credit by|clearing credit|neft credit|credit by transfer|transferred to( your| you)|credit by cheque|confirm reciept of|credit txn at|had a credit transaction|(?<!need to be )(?<!in case you have )(?<!will be )(?<!if )(?<!re)deposited(?! in your account has bounced| any)|cr on|cr with|(?<!fixed )(?<!security )deposit of|(?<!why not make a )deposit in your|deposit from|^(?!recurring)deposit with|(deposit (?!int|machine|and)transaction of).*(has been completed)|we are depositing|depositing an amount|(?<!waiting to be )(?<!ensure that your account is )(?<!ready to be )(?<!interest )(?<!can be )(?<!will be )(?<!directly)credited (for|by|with|in|into|to|acct|acount|a/c)|(?<!ensure that your account )(was|is|we have) credited|(((?<!we have )(?<!n't )(?<!not )received.*((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})? (?!your request))|((?<!n't )(?<!not )((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?received (?!your request)))|had a (cash)? deposit transaction of ((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?|((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})? is reversed to your (account|a/c)|credited ((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?|((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})? (has been )?credited.*((in|to) your (ac|account|acct|a/c))|credited (to )?(your (account|ac|a/c)).*((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?|you have received.*(((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?)|your (ac|a/c|account|acct).*(has credit for)|((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?.*transferred.*to your.*(account|\bac|acct|a/c)|payment of ((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?.* received (towards|in|on|to|from) (your|you)|((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?.*has been credited|has been credited.*((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?|((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?.*reversed.*your.*(account|a/c|acct|ac\b)|we have received ((₹|\brs|\bre|\binr)(\.)?\s?(-)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?) from.*agent""".r val WALLET_AMOUNT_REGEX = """^([\d,]{0,}\.?[\d]{0,})\s?(?=transferred)|(?:rs\.?|inr\.?)\s*([\d,]{0,}\.?\d+)+""".r val WALLET_SMS_REGEX1 = """^(?!.*congratulation|pre-approved|.*credit instantly|.*voucher|.*offer|.*failed|.*bonus|.*expire|.*plan|.*cashback|.*welcome|.*salary|.*instant|.*gold|.*\sdue|.*simpl pay later|.*pending|.*simpl bill|.*overdue|.*ready to be credited)(?=(?:.*rs\.?|.*inr\.?|.*₹\.?)\s*(?:[\d,]{0,}\.?\d+)+).*$""".r val WALLET_SMS_REGEX2 = """^(?=you paid|paid|received|settled|debited|credited)(?=(?:.*rs\.?|.*inr\.?|.*₹\.?)\s*(?:[\d,]{0,}\.?\d+)+).*$""".r val WALLET_BALANCE_REGEX = """(?:balance)[\W\s]*([\d,]{0,}\.?\d+)+|(?:balance.{0,30}rs\.)\s*([\d,]{0,}\.?\d+)+""".r val WALLET_SMS_CATEGORY_DEBIT_REGEX = """^(?!.*postpaid)(?=.*sent|.*send|.*paid|.*transferred|.*debited|.*charged to\s|.*requested|.*charged from|.*charged via|.*successful payment).*$""".r val WALLET_SMS_CATEGORY_CREDIT_REGEX = """^(?!.*request received)(?=.*received|.*added|.*credited|.*refunded|.*reversed).*$""".r val TELCO_PLAN_EXP_TODAY = """(?=.*(plan).*)(?=.*(expires today).*)(?=.*(rs|inr|mrp|₹|bal).*)""".r val BANK_SENDER_EXCLUDE_REGEX = """(paytm|fchrge|mdkwik|npci|phonpe|gtsmpl|gsimpl|hapygo|jiopay|ekart|flpkrt|jnbtem|rummy|rapido|gofynd)""".r val BANK_SMS_REGEX = """(?=.*(to vpa|account|a\/c|acct|card|\sac|^ac).*)(?=.*(\scr on\s|\sdr frm\s|atm wdl|cash wdl|credit|debit|used|deposited|txn|pos tran|w\/d|withdrawn|cash deposit|fund transfer|spent|paid|received|sent|withdrawal|purchase|upi|cash|imps|neft|with|loan|p2a|transaction of).*)(?=.*(inr|rs|₹).*)""".r val BANK_SMS_EXCLUDE_REGEX = """request|otp|auto debit|automatic|congratulations|reminder|could not be processed|mandate|created|one time password|application|may have|rummy|neupass|congrats|recurring|emi |deliver|concern|partner|mutual fund|kyc|banking rights|joining fee|never click|malicious|unknown|impersonate|don't|do not click|wrong|never download|safety|reversal|rejected|voucher|activate|declined|cannot\sbe|otp|cashback|failed|requested|will\sbe\s(deactivated|declined)|due|sale|be\srewarded|(added|modified).*beneficiary|has\sbeen\sscheduled\sfor\spayment|offer|could\snot\sbe\sprocessed|insufficient|one\stime\spassword|data\squota|internet\squota|offer|could\snot\sbe\sprocessed|insufficient|greetings|will\sbe\sdebited|credit\scard|limit\savailable|curr\so/s|avbl\slmt|total\sdue|initiated|data|will\sbe\sdeactivated|congratulations|celebrate|celebrations|welcome|off up to|loved|get up to""".r val BANK_SMS_EXCLUDE_NAN_REGEX = """overdue|bounced|\bemi\b(?! postponement)|\bloan\b|reward points|declined|due|insufficient|could\snot\sbe\s(processed|presented)|mandate|insurance policy|credit limit|outstanding|premium payment""".r val BANK_SMS_EXCLUDE_CC_REGEX= """\b(credit card|cardmember|creditcard|kotak card|supercard|(credited|debited) to your card)\b|^(?=.*(sbi|pnb|bajaj|citi|hsbc|kotak|hdfc|axis|icici|federal)\scard)(?!.*(avl|avbl|avail|available)\sbal).+$""".r //val CC_SMS_EXCLUDE_REGEX = """declined|cannot\sbe|otp|cashback|failed|requested|will\sbe\s(deactivated|declined)|due|sale|be\srewarded|(added|modified).*beneficiary|has\sbeen\sscheduled\sfor\spayment|offer|could\snot\sbe\sprocessed|insufficient|one\stime\spassword|data\squota|internet\squota|offer|could\snot\sbe\sprocessed|greetings|will\sbe\sdebited|limit\savailable|curr\so/s|avbl\slmt|data|will\sbe\sdeactivated|congratulations|celebrate|celebrations|welcome|off up to|loved|get up to""".r //06-04-2023 val BANK_AMOUNT_REGEX = """^((?:(?:\brs|\binr|\bmrp|₹|\bamt|\bre)\.?\s?)?(\d+(:?\,\d+)?(\,\d+)?(\.\d{1,2})?)(\s)?( credit|\s?cr|credit|debit| debit|\s?dr| deposit| transfer|spent|recieved|\bsent\b|\bused\b|\bpaid\b| charged))|(?<!bal )(?<!balance )(?<!blc )(?<!avl )(\b(₹|rs|re|inr|amt|rupees))[.\-:{ ]{0,5}(\d+)((\.|,)?(\d+)){0,4}""".r val BANK_AMOUNT_REGEX = """^((?:(?:rs|inr|mrp|₹)\.?\s?)?(\d+(:?\,\d+)?(\,\d+)?(\.\d{1,2})?)(\s)?( credit|\s?cr|credit|debit| debit|\s?dr| deposit| transfer|spent|recieved|\bsent\b|\bused\b|\bpaid\b| charged))|((?<!bal )(?<!balance )(?<!blc )(?<!avl )(?:(?:rs|inr|mrp|₹)\.?:?\s?)(\d+(:?\,\d+)?(\,\d+)?(\.\d{1,2})?))""".r val BANK_SMS_REGEX1 = """(?=.*account.*|.*a/c.*|.*acct.*|\sac.*)(?=.*avail.*|.*available.*|.*aval.*)(?=.*inr.*|.*rs.*|.*₹.*)""".r val BANK_SMS_REGEX2 = """(?=.*account.*|.*a/c.*|.*acct.*|\sac.*)(?=.*balance.*|\sbal.*|.*blc.*)(?=.*minimum.*|.*average.*|.*below*)""".r val MIN_BAL_REGEX = """(?:(?:rs|inr|mrp|₹|bal)\.?\s?)(\d+(:?\,\d+)?(\,\d+)?(\.\d{1,2})?)""".r val BALANCE_ANOMALY_REGEX="""(?:\bcr\b|\bdr\b).*(?:\bdr\b|\bcr\b).*(?:\bdr\b|\bcr\b)""".r val BALANCE_REGEX = """(?:balance is|balance|bal|blc)[\W\s]*((?:(?:rs|inr|mrp|₹)\.?\s?)\s*[\s]*[\d,]{0,}\.?\d+)""".r val BALANCE_REGEX_1 = """(?=.*balance.*|[\s.]{1}?bal.*|.*blc.*).*(?:(?:rs|inr|mrp|₹)\.?\s?)([-+]{0,1}\d+(:?\,\d+)?(\,\d+)?(\.\d{1,2})?)""".r val BANK_SMS_DIRECT_EXCLUDE = """timed out|is initiated|(otp|one time password)\s(for|is|\d{1,10} to proceed)|\d is (the (secret)?|your|ur) (otp|one time password)|is in (progress|process)""".r val BANK_DEBIT_ANOMALY_REGEX = """(debited|your beneficiary has received (rs|inr)|payment of rs\.|bill paid).*(credited(?!( to your| to you)))|(transferred|received|payment towards|(we have received)).*(payment towards)|(your).*(((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?).*(credited to benificiery)|your beneficiary has received (((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?)""".r val BANK_INLCUDING_EXCLUDE_CASES_REGEX="""(?<!is )initiated|(avail|mastercard) offer|safety|(?<!will be)deliver|mutual fund|data|welcome|(((never share |don\'t share |imps )otp)|(otp to anyone))|reversal|celebrates|cashback(?! offer ending soon)|(?<!if not )request|sale|upi ref|card pin|initiated.*has been credited|check your payment history|concerns, call us|pin\/""".r val LOANPAID_REGEX= """(thanks for depositing).*((towards|against) your loan)|(have received).*((towards|against) your loan)|(loan payment (?!request)).*(received towards)|(you have deposited).*(for loan)|(an amount of).*(debited).*(loan instalment)""".r /* MOBILE REGEX */ //val MOB_AMOUNT_REGEX = """(rs|inr|mrp|₹|bal)\.?\s?([\d,]{0,}\.?\d+)*""".r val MOB_AMOUNT_REGEX = """(?:rs|inr|mrp|₹|bal)\.?\s?([\d,]+\.?\d+)""".r /* OVERDUE */ val OVERDUE_SENDER_EXCLUDE_REGEX = """.*mpokkt|.*recvry""".r val OVERDUE_SMS_EXCLUDE_REGEX = """loan application|card application""".r val OVERDUE_SMS_REGEX = """(?=.*(over due|overdue|past due|pastdue|outstanding|dishonored|due yesterday).*)(?=.*(pay now|repay|emi|loan|payment|pmnt|pay on|cibil).*)""".r val IS_DUE_SMS_REGEX = """(?=.*((amount|is) due|due on\s\d|clear your dues).*)(?=.*(pay now|late payment|late pmnt|score decline|today|please pay|avoid service disruption|for payment|ensure|\bsufficient\b|account funded).*)|payment due by|total due (amt|amount)|due amount =\s?((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?|due date (is|\d)|(emi (of|for)).*(is due)|(instalment).*(is due)|(your emi).*(loan).*(pending)|(installment).*(not deposited)|bill payments.*pending""".r val OD_AMOUNT_REGEX = """(?:rs\.?)\s*([\d,]{0,}\.?\d+)*""".r /*INSURANCE*/ val INSURANCE_SMS_REGEX = """premium payment""".r /*promotional and food*/ val PROMOTIONAL_SMS_REGEX = """(coupon|code|get|pay|free|discount|offer|bonus|award|assured)(today|midnight|referral|discount|offer|bonus|award|assured|off).*$""".r val FOOD_AMOUNT_REGEX = """(?:rs\.?|inr\.?)\s*([\d,]{0,}\.?\d+)+""".r /*UTILITY*/ val UTILITY_SMS_REGEX1 = """(due on|pay by|due tomorrow)""".r val UTILITY_SMS_REGEX2 = """(was due|arrears)""".r val UTILITY_SMS_REGEX3 = """(subsidy)""".r val UTILITY_AMOUNT_REGEX = """(?:rs\.?|inr\.?)\s*([\d,]{0,}\.?\d+)+""".r /*bank extra*/ val INSUF_BANK_SMS_REGEX1 = """(insufficient (account )?(fund|balance|bal)|declined)|((balance|funds) insufficient)""".r val HAS_BOUNCED_REGEX = """has bounced""".r val LOAN_DECLINED_BANK_SMS_REGEX = """(?=.*loan request.*)(?=.*declined.*)""".r val EPFO_AMOUNT_REGEX = """(?:contribution)(?:\D+)+([\d,]{0,}\.?\d+)*""".r val EPFO_BALANCE_REGEX = """(?:balance)\s*(?:[-:,.]{0,})\s*([\d,]{0,}\.?\d+)*""".r val EPFO_BALANCE_REGEX_1 = """(?:balance against|balance)\s*(?:\w+)\s*(?:\D+)+([\d,]{0,}\.?\d+)*""".r val OTP_REGEX="""(otp).*(valid till)|(is otp).*(for (txn|transaction))|(you have initiated).*(to withdraw)|was cancelled due to (?!insufficient funds)|urgent reminder""".r val AMOUNT_REGEX = """(?:(?:rs|inr|mrp|₹)\.?\s?)(\d+(:?\,\d+)?(\,\d+)?(\.\d{1,2})?)""".r /*TELCO PLAN EXP*/ val PLAN_EXP_REGEX = """(?=.*(outgoing service|your plan|services).*)(?=.* expired.*)""".r val TELCO_IS_BARRED = """(?=.*(is|are).*)(?=.*(barred|suspended|service stopped).*)""".r val TELCO_AMT_CREDITED = """(?=.*(received).*)(?=.*(payment).*)(?=.*(rs|inr|mrp|₹|bal).*)""".r /*POLICY_EXP*/ val POLICY_TO_EXP_REGEX = """(.* 2-wheeler.* |.* 4-wheeler.*|.* bike.*|.* car.*|.* policy.*)(.* expires.*)(.* today.*|.* tomorrow.*|.* on.*)""".r val POLICY_EXP_REGEX = """(.* 2-wheeler.*| .* two-wheeler.*| .* four-wheeler.*|.* 4-wheeler.*|.* bike.*|.* car.*|.* policy.*|.* insurance.*)(.* expired.*)(.* yesterday.*|.* days back.*)""".r val POLICY_ISSUE_REGEX = """(.*policy has been issued.*|.* (is|has been) issued.*)""".r /*EDUCATION*/ val FEES_DUE_REGEX = """(.* fees installment.*)(.* due.*)""".r val SCHOLARSHIP_REGEX = """(.* scholarship am.*)(.* credit.*)""".r val EDUCATION_AMOUNT_REGEX = """(?:rs\.?|inr\.?)\s*([\d,]{0,}\.?\d+)+""".r /*REUSABLE REGEX*/ val GENERAL_CREDIT=BANK_CREDIT_REGEX.pattern.pattern() val GENERAL_DEBIT=BANK_DEBIT_REGEX.pattern.pattern() val GENERAL_INCLUDING_EXCLUDE_CASES = BANK_INLCUDING_EXCLUDE_CASES_REGEX.pattern.pattern() val GENERAL_SMS_DIRECT_EXCLUDE= BANK_SMS_DIRECT_EXCLUDE.pattern.pattern() /*CARD*/ val CC_SMS_EXCLUDE_REGEX="""timed out|(w/d).*(could not be dispensed due to tech)|upi pin set|preapproved|pre_approved|pre-approved|request|otp|auto debit|automatic|congratulations|reminder|created|one time password|application|may have|rummy|neupass|congrats|recurring|deliver|concern|partner|mutual fund|kyc|bank has (introduced|started)|banking rights|joining fee|never click|check your|malicious|unknown|impersonate|don't|do not click|wrong|never|\bpin\b|safety|reversal|rejected|voucher|activate|cannot\sbe|otp|book now|cashback|failed|requested|will\sbe\s(deactivated|declined)|\bsale\b|presale|be\srewarded|we observe|promotional|guaranteed|(added|modified).*beneficiary|has\sbeen\sscheduled\sfor\spayment|offer|insufficient|one\stime\spassword|data\squota|internet\squota|offer|greetings|will\sbe\sdebited|limit\savailable|curr\so/s|avbl\slmt|(?<!txn\. )initiated|data|will\sbe\sdeactivated|congratulations|celebrate|celebrations|welcome (?!to pnb)|off up to|loved|get up to|has introduced|eligible for|unlimited""".r val CC_INCLUDING_EXCLUDE_CASES_REGEX="""(?<!is )initiated|(avail|mastercard) offer|safety|(?<!will be)deliver|mutual fund|data|welcome|(((never share |don\'t share |imps )otp)|(otp to anyone))|reversal|celebrates|cashback(?! offer ending soon)|(?<!if not )request|sale|upi ref|card pin|curr o/s""".r val CC_CREDIT_REGEX_temp=GENERAL_CREDIT+"""|a payment of ((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?.*(towards your|on your)|credited payment of ((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?""" val CC_DEBIT_REGEX_temp= GENERAL_DEBIT+"""|spent.*credit card.*((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?""" val CC_CREDIT_REGEX=CC_CREDIT_REGEX_temp.r val CC_DEBIT_REGEX= CC_DEBIT_REGEX_temp.r /*WALLET*/ val WALLET_INCLUDING_EXCLUDE_CASES_REGEX_temp=GENERAL_INCLUDING_EXCLUDE_CASES+"""|automatic""" val WALLET_CREDIT_REGEX_temp=GENERAL_CREDIT+"""|added ((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?.*wallet|((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})? is (refunded|reversed).*to your|has settled ((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})?.*your (\ba/c|\baccount|\bacct|\bwallet)|((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})? added from.*wallet""" val WALLET_DEBIT_REGEX_temp=GENERAL_DEBIT+"""|((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})? has been paid|((₹|\brs|\bre|\binr|amt)(\.)?\s?(-|\{|:)?(\s)?\d{1,100}(,\d{1,100})?(,\d{1,100})?(\d{1,100})?(\.\d{0,100})?\s?)(\})? used.*for (your)? payment""" val WALLET_SMS_EXCLUDE_DIRECT_REGEX_temp=GENERAL_SMS_DIRECT_EXCLUDE+"""|\bget.*credited in|has failed""" val WALLET_INCLUDING_EXCLUDE_CASES_REGEX=WALLET_INCLUDING_EXCLUDE_CASES_REGEX_temp.r val WALLET_CREDIT_REGEX=WALLET_CREDIT_REGEX_temp.r val WALLET_DEBIT_REGEX=WALLET_DEBIT_REGEX_temp.r val WALLET_SMS_EXCLUDE_DIRECT_REGEX=WALLET_SMS_EXCLUDE_DIRECT_REGEX_temp.r def otherBankTypeAnalysis(sms: String): String = { if ( OTP_REGEX.findAllIn(sms).length != 0) { return "others" } else if ( INSUF_BANK_SMS_REGEX1.findAllIn(sms).length != 0) { return "insuffnd" } else if ( LOANPAID_REGEX.findAllIn(sms).length != 0) { return "loanpaid" } else if ( OVERDUE_SMS_EXCLUDE_REGEX.findAllIn(sms).length != 0) { return "others" } else if ( OVERDUE_SMS_REGEX.findAllIn(sms).length != 0) { return "overdue" } else if ( IS_DUE_SMS_REGEX.findAllIn(sms).length != 0) { return "isdue" } else if ( HAS_BOUNCED_REGEX.findAllIn(sms).length != 0) { return "has_bounced" } else if ( BANK_DEBIT_ANOMALY_REGEX.findAllIn(sms).length != 0) { return "debit" } else if ( BANK_CREDIT_REGEX.findAllIn(sms).length != 0) { return "credit" } else if ( BANK_DEBIT_REGEX.findAllIn(sms).length != 0) { return "debit" } else { return "others" } "others" } def otherCardTypeAnalysis(sms: String): String = { if ( OTP_REGEX.findAllIn(sms).length != 0) { return "others" } else if ( INSUF_BANK_SMS_REGEX1.findAllIn(sms).length != 0) { return "insuffnd" } else if ( LOANPAID_REGEX.findAllIn(sms).length != 0) { return "loanpaid" } else if ( OVERDUE_SMS_EXCLUDE_REGEX.findAllIn(sms).length != 0) { return "others" } else if ( OVERDUE_SMS_REGEX.findAllIn(sms).length != 0) { return "overdue" } else if ( IS_DUE_SMS_REGEX.findAllIn(sms).length != 0) { return "isdue" } else if ( HAS_BOUNCED_REGEX.findAllIn(sms).length != 0) { return "has_bounced" } else if ( BANK_DEBIT_ANOMALY_REGEX.findAllIn(sms).length != 0) { return "debit" } else if ( CC_CREDIT_REGEX.findAllIn(sms).length != 0) { return "credit" } else if ( CC_DEBIT_REGEX.findAllIn(sms).length != 0) { return "debit" } else { return "others_1" } "others" } def otherWalletTypeAnalysis(sms: String): String = { if ( OTP_REGEX.findAllIn(sms).length != 0) { return "others" } else if ( INSUF_BANK_SMS_REGEX1.findAllIn(sms).length != 0) { return "insuffnd" } else if ( LOANPAID_REGEX.findAllIn(sms).length != 0) { return "loanpaid" } else if ( OVERDUE_SMS_EXCLUDE_REGEX.findAllIn(sms).length != 0) { return "others" } else if ( OVERDUE_SMS_REGEX.findAllIn(sms).length != 0) { return "overdue" } else if ( IS_DUE_SMS_REGEX.findAllIn(sms).length != 0) { return "isdue" } else if ( HAS_BOUNCED_REGEX.findAllIn(sms).length != 0) { return "has_bounced" } else if ( BANK_DEBIT_ANOMALY_REGEX.findAllIn(sms).length != 0) { return "debit" } else if ( WALLET_CREDIT_REGEX.findAllIn(sms).length != 0) { return "credit" } else if ( WALLET_DEBIT_REGEX.findAllIn(sms).length != 0) { return "debit" } else { return "others_2" } "others" } def cardTypeAnalysis(sms: String): String = { if ( BANK_SMS_DIRECT_EXCLUDE.findAllIn(sms).length != 0) { "others" } else if ( BANK_SMS_EXCLUDE_NAN_REGEX.findAllIn(sms).length != 0) { otherCardTypeAnalysis(sms) } else if ( CC_SMS_EXCLUDE_REGEX.findAllIn(sms).length != 0) { if ( CC_INCLUDING_EXCLUDE_CASES_REGEX.findAllIn(sms).length != 0) { if ( OTP_REGEX.findAllIn(sms).length != 0) { "others" } else if ( BANK_DEBIT_ANOMALY_REGEX.findAllIn(sms).length != 0) { "debit" } else if ( CC_CREDIT_REGEX.findAllIn(sms).length != 0) { "credit" } else if ( CC_DEBIT_REGEX.findAllIn(sms).length != 0) { "debit" } "others" } "others" } else if ( BALANCE_ANOMALY_REGEX.findAllIn(sms).length != 0) { "balchk" } else if ( BANK_DEBIT_ANOMALY_REGEX.findAllIn(sms).length != 0) { "debit" } else if ( CC_CREDIT_REGEX.findAllIn(sms).length != 0) { "credit" } else if ( CC_DEBIT_REGEX.findAllIn(sms).length != 0) { "debit" } else if ( BANK_SMS_REGEX2.findAllIn(sms).length != 0) { //to review "minbal" } else if ( BANK_SMS_REGEX1.findAllIn(sms).length != 0) { "balchk" } else { "others" } "others" } def extractLvl3TransactionDetails(lvl1CTGY: Int, lvl2CTGY: String, SMS_SENDER: String, SMS_CONTENT: String): String ={ val sms = SMS_CONTENT.toLowerCase() val sender = SMS_SENDER.toLowerCase() var category3 = "" if (lvl2CTGY == "bank") { if ( BANK_SMS_EXCLUDE_CC_REGEX.findAllIn(sms).length != 0) { category3 = cardTypeAnalysis(sms) } else if ( BANK_SMS_DIRECT_EXCLUDE.findAllIn(sms).length != 0) { category3 = "others" } else if ( BANK_SMS_EXCLUDE_NAN_REGEX.findAllIn(sms).length != 0) { category3 = otherBankTypeAnalysis(sms) } else if ( BANK_SMS_EXCLUDE_REGEX.findAllIn(sms).length != 0) { if ( BANK_INLCUDING_EXCLUDE_CASES_REGEX.findAllIn(sms).length != 0) { if ( OTP_REGEX.findAllIn(sms).length != 0) { category3 = "others" } else if ( BANK_DEBIT_ANOMALY_REGEX.findAllIn(sms).length != 0) { category3 = "debit" } else if ( BANK_CREDIT_REGEX.findAllIn(sms).length != 0) { category3 = "credit" } else if ( BANK_DEBIT_REGEX.findAllIn(sms).length != 0) { category3 = "debit" } } category3 = "others" } else if ( BALANCE_ANOMALY_REGEX.findAllIn(sms).length != 0) { category3 = "balchk" } else if ( BANK_DEBIT_ANOMALY_REGEX.findAllIn(sms).length != 0) { category3 = "debit" } else if ( BANK_CREDIT_REGEX.findAllIn(sms).length != 0) { category3 = "credit" } else if ( BANK_DEBIT_REGEX.findAllIn(sms).length != 0) { category3 = "debit" } else if ( BANK_SMS_REGEX2.findAllIn(sms).length != 0) { //to review category3 = "minbal" } else if ( BANK_SMS_REGEX1.findAllIn(sms).length != 0) { category3 = "balchk" } else { category3 = "others_3" } } "others_1" } def main(args: Array[String]){ print(extractLvl3TransactionDetails(9, "bank","bank", "your citibank a/c has been debited with inr 3200.00 on 31-oct-2022 at 12:38 and account 9880906007@axl has been credited. upi ref no. 230413757396")); } }
Write, Run & Share Scala code online using OneCompiler's Scala online compiler for free. It's one of the robust, feature-rich online compilers for Scala language, running on the latest version 2.13.8. Getting started with the OneCompiler's Scala compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as Scala
and start coding.
OneCompiler's Scala online editor supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample Scala program which takes name as input and prints hello message with your name.
object Hello {
def main(args: Array[String]): Unit = {
val name = scala.io.StdIn.readLine() // Read input from STDIN
println("Hello " + name )
}
}
Scala is both object-oriented and functional programming language by Martin Odersky in the year 2003.
Variable is a name given to the storage area in order to identify them in our programs.
var or val Variable-name [: Data-Type] = [Initial Value];
If, If-else, Nested-Ifs are used when you want to perform a certain set of operations based on conditional expressions.
if(conditional-expression){
//code
}
if(conditional-expression) {
//code if condition is true
} else {
//code if condition is false
}
if(condition-expression1) {
//code if above condition is true
} else if (condition-expression2) {
//code if above condition is true
}
else if(condition-expression3) {
//code if above condition is true
}
...
else {
//code if all the above conditions are false
}
For loop is used to iterate a set of statements based on a criteria.
for(index <- range){
// code
}
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while(condition) {
// code
}
Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.
do {
// code
} while (condition)
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity.
def functionname(parameters : parameters-type) : returntype = { //code
}
You can either use =
or not in the function definition. If =
is not present, function will not return any value.