正则表达式,用于查找末尾带有迭代字母的字符串

时间:2016-10-06 09:19:01

标签: python regex string loops iterator

有人可以帮助我使用这种正则表达式匹配吗?

例如,我搜索包含不同字符串的列表,并在字符串末尾迭代一个字母:

  • 龟背竹
  • MonsterB
  • MonsterC
  • HeroA
  • HeroB
  • HeroC
  • ...

我需要返回的脚本只是字符串的前一部分,在本例中为 Monster Hero

2 个答案:

答案 0 :(得分:0)

如果你绝对需要正则表达式:

re.match(r"(.*)[A-Z]", word).group(1)

但如果您只想删除最后一个字符,那么效率不高。

答案 1 :(得分:0)

您可以使用正向前瞻断言 (?=...)检查单词以单个大写字符结尾,然后使用单词boudaries \b...\b以确保它与模式不匹配不是全文:

>>> text = "This re will match MonsterA and HeroB but not heroC or MonsterCC"
>>> re.findall(r"\b[A-Z][a-z]+(?=[A-Z]\b)", text)
['Monster', 'Hero'] 

re.findall返回列表中的所有此类匹配项。