簡體   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