繁体   English   中英

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

[英]Regular expression to find string with iterating letters on the end

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

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

  • 怪物A
  • 怪物B
  • 怪物C
  • 英雄A
  • 英雄B
  • 英雄C
  • ...

我需要这个脚本返回的只是字符串的前面部分,在这个例子中MonsterHero

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

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

但是如果您只想删除最后一个字符,这不是最有效的。

您可以使用积极的前瞻断言(?=...)来检查单词以单个大写字符结尾,然后使用单词 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返回列表中的所有此类匹配项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM