import re
class FindSpam:
rules = [
{ 'regex' : "(?i)\\ b(baba(ji)?|nike|vashikaran|sumer|kolcak|porn|molvi|judi bola|ituBola.com|lost lover|11s)\\ b" , 'all' : True ,
'sites' : [ ] , 'reason' : "Bad keyword detected" } ,
{ 'regex' : "\\ +\\ d{10}|\\ +?\\ d{2}[\\ s\\ -]?\\ d{8,10}" , 'all' : True ,
'sites' : [ "patents.stackexchange.com" ] , 'reason' : "Phone number detected" } ,
{ 'regex' : "(?i)\\ b(nigg?(a|er)|asshole|crap|fag|fuck(ing?)?|idiot|shit|whore)s?\\ b" , 'all' : True ,
'sites' : [ ] , 'reason' : "Offensive title detected" , 'insensitive' :True } ,
{ 'regex' : "^(?=.*[A-Z])[^a-z]*$" , 'all' : True , 'sites' : [ ] , 'reason' : "All-caps title" }
]
@ staticmethod
def testpost( title, site ) :
result = [ ] ;
for rule in FindSpam.rules :
if rule[ 'all' ] != ( site in rule[ 'sites' ] ) :
if re .compile ( rule[ 'regex' ] ) .search ( title) :
result.append ( rule[ 'reason' ] )
return result
names = '''JYTHON HELP PLEASE I DONT KNOW WHERE I AM GOING WORNG :(
JYTHON HELP PLEASE....I I DONT KNOW WHERE I AM GOING WORNG :(
JYTHON HELP PLEASE DONT KNOW WHERE I AM GOING WORNG :(
HELP PLS… I AM STUCK R4WR'''
for name in re .split ( r'\n ' , names) :
print name
print FindSpam.testpost ( name, "stackoverflow.com" )
aW1wb3J0IHJlCgpjbGFzcyBGaW5kU3BhbToKICBydWxlcyA9IFsKICAgeydyZWdleCc6ICIoP2kpXFxiKGJhYmEoamkpP3xuaWtlfHZhc2hpa2FyYW58c3VtZXJ8a29sY2FrfHBvcm58bW9sdml8anVkaSBib2xhfGl0dUJvbGEuY29tfGxvc3QgbG92ZXJ8MTFzKVxcYiIsICdhbGwnOiBUcnVlLAogICAgJ3NpdGVzJzogW10sICdyZWFzb24nOiAiQmFkIGtleXdvcmQgZGV0ZWN0ZWQifSwKICAgeydyZWdleCc6ICJcXCtcXGR7MTB9fFxcKz9cXGR7Mn1bXFxzXFwtXT9cXGR7OCwxMH0iLCAnYWxsJzogVHJ1ZSwKICAgICdzaXRlcyc6IFsicGF0ZW50cy5zdGFja2V4Y2hhbmdlLmNvbSJdLCAncmVhc29uJzogIlBob25lIG51bWJlciBkZXRlY3RlZCJ9LAogICB7J3JlZ2V4JzogIig/aSlcXGIobmlnZz8oYXxlcil8YXNzaG9sZXxjcmFwfGZhZ3xmdWNrKGluZz8pP3xpZGlvdHxzaGl0fHdob3JlKXM/XFxiIiwgJ2FsbCc6IFRydWUsCiAgICAnc2l0ZXMnOiBbXSwgJ3JlYXNvbic6ICJPZmZlbnNpdmUgdGl0bGUgZGV0ZWN0ZWQiLCdpbnNlbnNpdGl2ZSc6VHJ1ZX0sCiAgIHsncmVnZXgnOiAiXig/PS4qW0EtWl0pW15hLXpdKiQiLCAnYWxsJzogVHJ1ZSwgJ3NpdGVzJzogW10sICdyZWFzb24nOiAiQWxsLWNhcHMgdGl0bGUifQogIF0KCiAgQHN0YXRpY21ldGhvZAogIGRlZiB0ZXN0cG9zdCh0aXRsZSwgc2l0ZSk6CiAgICByZXN1bHQgPSBbXTsKICAgIGZvciBydWxlIGluIEZpbmRTcGFtLnJ1bGVzOgogICAgICBpZiBydWxlWydhbGwnXSAhPSAoc2l0ZSBpbiBydWxlWydzaXRlcyddKToKICAgICAgICBpZiByZS5jb21waWxlKHJ1bGVbJ3JlZ2V4J10pLnNlYXJjaCh0aXRsZSk6CiAgICAgICAgICByZXN1bHQuYXBwZW5kKHJ1bGVbJ3JlYXNvbiddKQogICAgcmV0dXJuIHJlc3VsdAoKbmFtZXMgPSAnJydKWVRIT04gSEVMUCBQTEVBU0UgSSBET05UIEtOT1cgV0hFUkUgSSBBTSBHT0lORyBXT1JORyA6KApKWVRIT04gSEVMUCBQTEVBU0UuLi4uSSBJIERPTlQgS05PVyBXSEVSRSBJIEFNIEdPSU5HIFdPUk5HIDooCkpZVEhPTiBIRUxQIFBMRUFTRSBET05UIEtOT1cgV0hFUkUgSSBBTSBHT0lORyBXT1JORyA6KApIRUxQIFBMU+KApiBJIEFNIFNUVUNLIFI0V1InJycKCmZvciBuYW1lIGluIHJlLnNwbGl0KHInXG4nLCBuYW1lcyk6CiAgcHJpbnQgbmFtZQogIHByaW50IEZpbmRTcGFtLnRlc3Rwb3N0KG5hbWUsICJzdGFja292ZXJmbG93LmNvbSIp