Home > Mobile >  How can I check if a string contains only English characters, exclamation marks at the end?
How can I check if a string contains only English characters, exclamation marks at the end?

Time:11-01

For example, "hello!!" should return true, whereas "45!!","!!ok" should return false. The only case where it should return true is when the string has English characters (a-z) with 0 or more exclamation marks in the end.

The following is my solution using an iterative method. However, I want to know some clean method having fewer lines of code (maybe by using some Python library).

def fun(str):
    i=-1
    for i in range(0,len(str)):
        if str[i]=='!':
            break
        elif (str[i]>='a' and str[i]<='z'):
            continue
        else:
            return 0

    while i<len(str):
        if(str[i]!='!'):
            return 0
        i =1

    return 1

print(fun("hello!!"))

CodePudding user response:

Regex can help you out here. The regular expression you're looking for here is:

^[a-z] !*$

This will allow one or more English letters (lowered case, you can add upper case as well if you'll go with ^[a-zA-Z] !*$, or any other letters you'd like to add inside the square brackets) and zero or more exclamation marks at the end of the word.

Wrapping it up with python code:

import re
pattern = re.compile(r'^[a-z ] !*$')
word = pattern.search("hello!!")
print(f"Found word: {word.group()}")
  • Related