使用正则表达式匹配字符串中单词的最后 3 个字母

Avo*_*yan 0 python regex string

我有一个字符串“cough\tbough”或“quod erat Demonstrandum\ tand that,女士们先生们,是我的备忘录的结尾”。我需要检查这句话的最后一个单词的最后 3 个字母是否相等。但是反斜杠让我很困惑。

pairOfLines="cough\tbough"
pattern = ?????
match = re.match(pattern, pairOfLines)
return match.group(1) == match.group(2)
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 5

import re

pairOfLines="cough\tbough"

m = re.match(r'.*?(\w{3})\b.*?(\w{3})\b', pairOfLines)
print(m.groups())
('ugh', 'ugh')
Run Code Online (Sandbox Code Playgroud)
  • .*? - 在第一组之前匹配任何东西
  • (\w{3})\b - 第一个捕获组,其中

    • \w{3} - 3 个字母
    • \b - 单词边界 - 表示字母必须在末尾
  • .*? - 在第二组之前匹配任何东西

  • (\w{3})\b - 第二个捕获组,类似于第一个

您也可以使用re.findall相同的效果:

pairOfLines="cough\tbough"

l = re.findall(r'(?:.*?(\w{3})\b)', pairOfLines)
print(l)
['ugh', 'ugh']
Run Code Online (Sandbox Code Playgroud)
  • (?:...) - 非捕获外部组
  • (\w{3})\b - 单独捕获组,其中
    • \w{3} - 3 个字母
    • \b - 字边界