簡體   English   中英

使用re.match()修復字符串大寫

[英]Using re.match() to fix string capitalization

我沒有嘗試在網站上嘗試解決的特定問題,因此無法獲得期望的輸出。 這是問題所在:

讓我們考慮一下在以下情況下使用大寫鎖定鍵意外鍵入了一個單詞:

它僅包含大寫字母; 或除第一個字母外的所有字母均為大寫。 在這種情況下,我們應該自動更改所有字母的大小寫。 例如,應該更改構成單詞“ hELLO”,“ HTTP”,“ z”的字母的大小寫。

編寫一個應用上述規則的程序。 如果無法應用該規則,則程序應保持單詞不變。

我嘗試使用以下代碼,但我不明白為什么它不起作用,我認為應該如此。

import re
word = input()
exp = r'[a-z]+[A-Z]+'
exp2 = r'[A-Z]+'
if bool(re.match(word, exp)) or bool(re.match(word, exp2)):
    print(word[0].upper() + word[1:].lower())
else:
    print(word)
Input:CAPS
Desired output: Caps
Current output: CAPS

Input:cAPS
Desired output: Caps
Current output: cAPS

Input:cAPSlOCK
Desired output:cAPSlOCK
Current output: cAPSlOCK

第一個正則表達式: r'[az]+[AZ]+'匹配一個字符串,該字符串以一個或多個小寫字母開頭,然后是一個或多個大寫字母。

第二個正則表達式r'[AZ]+'匹配以一個或多個大寫字母開頭的字符串。

您可以將它們組合為: r'[az]?[AZ]+' ,它匹配以0或1個小寫字母開頭,然后是一個或多個大寫字母的字符串。

其次,調用re.match()時參數順序錯誤。 第一個參數應為正則表達式,第二個參數應為字符串: re.match(exp,word)

工作實施:

import re

word = input()
exp = r'[a-z]?[A-Z]+'
if bool(re.match(exp,word)):
    print(word[0].upper() + word[1:].lower())
else:
    print(word)

演示: https : //repl.it/@glhr/55438600

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM