Alosyius
Alosyius

Reputation: 9121

Python regex check if string contains any of words

I want to search a string and see if it contains any of the following words: AB|AG|AS|Ltd|KB|University

I have this working in javascript:

var str = 'Hello test AB';
var forbiddenwords= new RegExp("AB|AG|AS|Ltd|KB|University", "g");

var matchForbidden = str.match(forbiddenwords);

if (matchForbidden !== null) {
   console.log("Contains the word");
} else {
   console.log("Does not contain the word");
}

How could I make the above work in python?

Upvotes: 5

Views: 29709

Answers (4)

user3725459
user3725459

Reputation: 424

import re
strg = "Hello test AB"
#str is reserved in python, so it's better to change the variable name

forbiddenwords = re.compile('AB|AG|AS|Ltd|KB|University') 
#this is the equivalent of new RegExp('AB|AG|AS|Ltd|KB|University'), 
#returns a RegexObject object

if forbiddenwords.search(strg): print 'Contains the word'
#search returns a list of results; if the list is not empty 
#(and therefore evaluates to true), then the string contains some of the words

else: print 'Does not contain the word'
#if the list is empty (evaluates to false), string doesn't contain any of the words

Upvotes: 9

Marcin
Marcin

Reputation: 238249

You can use findall to find all matched words:

import re

s= 'Hello Ltd test AB ';

find_result = re.findall(r'AB|AG|AS|Ltd|KB|University', s)

if not find_result:
    print('No words found')    
else:
    print('Words found are:', find_result)

# The result for given example s is
# Words found are: ['Ltd', 'AB']

If no word is found, that re.findall returns empty list. Also its better not to use str as a name of veritable, since its overwriting build in function in python under the same name.

Upvotes: 2

Sharath
Sharath

Reputation: 338

You can use re module. Please try below code:

import re
exp = re.compile('AB|AG|AS|Ltd|KB|University')
search_str = "Hello test AB"
if re.search(exp, search_str):
  print "Contains the word"
else:
  print "Does not contain the word"

Upvotes: 6

bendtherules
bendtherules

Reputation: 382

str="Hello test AB"
to_match=["AB","AG","AS","Ltd","KB","University"]
for each_to_match in to_match:
    if each_to_match in str:
        print "Contains"
        break
else:
    print "doesnt contain"

Upvotes: 3

Related Questions