有人可以帮助我使用这种正则表达式匹配吗?
例如,我搜索包含不同字符串的列表,并在字符串末尾迭代一个字母:
我需要返回的脚本只是字符串的前一部分,在本例中为 Monster 和 Hero 。
答案 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
返回列表中的所有此类匹配项。