Python 使用正则表达式匹配字符串中单词的最后3个字母
我有一个字符串“cough\tbough”或“qood erat demonstrandum”\ 女士们,先生们,我的备忘录到此结束。”。我需要检查这句话的最后三个字母是否相等。但是反斜杠把我弄糊涂了Python 使用正则表达式匹配字符串中单词的最后3个字母,python,regex,string,Python,Regex,String,我有一个字符串“cough\tbough”或“qood erat demonstrandum”\ 女士们,先生们,我的备忘录到此结束。”。我需要检查这句话的最后三个字母是否相等。但是反斜杠把我弄糊涂了 pairOfLines="cough\tbough" pattern = ????? match = re.match(pattern, pairOfLines) return match.group(1) == match.group(2) 您可以拆分: pairOfLines="cough\
pairOfLines="cough\tbough"
pattern = ?????
match = re.match(pattern, pairOfLines)
return match.group(1) == match.group(2)
您可以拆分:
pairOfLines="cough\tbough"
val1, val2 = pairOfLines.split("\t")
if val1[-3:] == val2[-3:]:
#do something
但是,如果要实现正则表达式,可以使用re.split()
:
-匹配第一组之前的任何内容*?
-第一个捕获组,其中(\w{3})\b
-3个字母\w{3}
-单词边界-表示字母必须位于末尾\b
-匹配第二组之前的任何内容*?
-第二个捕获组,类似于第一个捕获组(\w{3})\b
您也可以使用
re.findall
来达到相同的效果:
pairOfLines="cough\tbough"
l = re.findall(r'(?:.*?(\w{3})\b)', pairOfLines)
print(l)
['ugh', 'ugh']
-不捕获外部组(?:…)
-单独捕获组,其中(\w{3})\b
-3个字母\w{3}
-单词边界\b
pairOfLines="cough\tbough"
pattern = r'(\w{3})\b.*?\1\b'
match = re.search(pattern, pairOfLines)
# match.group(1) = 'ugh'
match将返回match对象,如果它两次填充匹配最后3个字符的正则表达式,否则它将不返回任何对象
例如,如果pairOfLines=“cough\toughs”,则match将返回None
-最后3个字符的第一个捕获组(\w{3})
-结束 词界\b
-任何字符后跟 再次匹配第一捕获组*?(\1)
-词尾 边界\b
pairOfLines="cough\tbough"
l = re.findall(r'(?:.*?(\w{3})\b)', pairOfLines)
print(l)
['ugh', 'ugh']
pairOfLines="cough\tbough"
pattern = r'(\w{3})\b.*?\1\b'
match = re.search(pattern, pairOfLines)
# match.group(1) = 'ugh'