Python:
''' REGEXUTIL CLASS'''
# returns expression of type theRegex from the string str2Check
class RegexUtil:
def regexChecker(self, theRegex: str, str2Check: str) -> str:
regexMatcher = re.search(theRegex, str2Check)
if (regexMatcher != None):
return regexMatcher.group(0).strip()
return ""
def numberRegex(self, str2Check: str) -> str:
theRegex = r"[-+]?[0-9]*[.,][0-9]*"
list1: list[str] = []
regexMatcher = re.search(theRegex, str2Check)
if (regexMatcher != None):
return regexMatcher.group(0).strip()
return ""
def timeStampRegex(self, str2Check: str) -> str:
theRegex = r"(([0-9]|[0-1][0-9]|[2][0-3]):([0-5][0-9])$)|(^([0-9]|[1][0-9]|[2][0-3])$)"
list1: list[str] = []
regexMatcher = re.search(theRegex, str2Check)
if (regexMatcher != None):
return regexMatcher.group(0).strip()
return ""
def intRegex(self, str2Check: str) -> str:
theRegex = r"[-+]?[0-9]{1,13}"
list1: list[str] = []
regexMatcher = re.search(theRegex, str2Check)
if (regexMatcher != None):
return regexMatcher.group(0).strip()
return ""
def pointRegex(self, str2Check: str) -> Point:
# "[-+]?[0-9]{1,13}(\\.[0-9]*)?" for double numbers
theRegex: str = "[-+]?[0-9]{1,13}"
result: Point = Point(0, 0)
list1: list[str] = []
regexMatcher = re.search(theRegex, str2Check)
if (regexMatcher != None):
result.y = int(regexMatcher.group(0).strip())
str2Check = str2Check[str2Check.index(f'{result.y}') + 1:len(str2Check)]
phase2 = str2Check
phase2 = self.intRegex(phase2)
if (phase2 == ""):
return Point(result.y, 0)
result.x = int(phase2)
return Point(result.y, result.x)
def regexChecker2(self, theRegex: str, str2Check: str) -> list[str]:
# return a list of all matches
mylist : list[str] = str2Check.split()
r = re.compile(theRegex)
l_final = list(filter(r.match, mylist))
return l_final
def contactRegex(self, str2Check: str) -> str:
# return a list of all matches
theRegex = r"(?<=contact)(.*)"
list1: list[str] = []
regexMatcher = re.search(theRegex, str2Check)
if (regexMatcher != None):
return regexMatcher.group(0).strip()
return ""
def emailRegex(self, str2Check: str) -> str:
# return a list of all matches
theRegex = '([A-Za-z0-9]+[.-_])*[A-Za-z0-9]+@[A-Za-z0-9-]+(\.[A-Z|a-z]{2,})+'
list1: list[str] = []
regexMatcher = re.search(theRegex, str2Check)
if (regexMatcher != None):
return regexMatcher.group(0).strip()
return ""
def duplicateRegex(self, input: str) -> str:
# first split given string separated by space
# into words
words = input.split(' ')
# now convert list of words into dictionary
dict = Counter(words)
# traverse list of words and check which first word
# has frequency > 1
for key in words:
if dict[key] > 1:
return key
return ""
def uniqueWord(self, str1: str) -> str:
list1: list[str] = [] # of strings
s = str1.split(" ")
p = s[0]
list1.append(p)
# i
for i in range(1, len(s)):
if (not (p == s[i])):
list1.append(s[i])
p = s[i]
return list1[0]
def afterWord(self, word: str, str2Check: str) -> str:
# return a list of all matches
theRegex = r"(?<=" + word + r")(.*)"
list1: list[str] = []
regexMatcher = re.search(theRegex, str2Check)
if (regexMatcher != None):
return regexMatcher.group(0).strip()
return ""
def phoneRegex1(self, str2Check: str) -> str:
return self.regexChecker(r"[0]\d{2}\d{4}\d{3}$", str2Check)
def firstWord(self, str2Check: str) -> str:
arr: list[str] = str2Check.split(" ", 2)
firstWord = arr[0] # the
return firstWord
def stripAwayNumbers(self, str1: str) -> str:
return re.sub(r'\d+', '', str1)