Python---------第8章正規表現教室実験

8376 ワード

1.正規表現を使用して、テキスト内で最も長い数値文字列を検索します.
import re
def longest1(s):
    '''        '''
    t = re.findall('\d+', s)
    if t:
        return max(t, key=len)
    return 'No'
def longest2(s):
    '''          '''
    t = re.split('[^\d]+', s)
    if t:
        return max(t, key=len)
    return 'No‘

m="abcd12345ed125ss123456789"
print(longest1(m))
print(longest2(m))

2.1つの英語のテキストの単語を逆にし、句読点を逆にしないで、単語の間に1つ以上のスペースを使用して分割すると仮定します.例えば、I like beijing.は関数を経て、beijing.like Iになります.
import re

def reverse(s):
    t = re.split('\s+', s.strip())
    t.reverse()
    return ' '.join(t)

print(reverse('I like beijing.'))
print(reverse('Simple is better than complex.'))

3.プログラムを作成し、正規表現を使用して別のPythonプログラムのすべての関数名を抽出します.
import re
fileName = input('      Python      :')
pattern = r'^def (\w+?)\(.*?\):'
funcNames = []
with open(fileName, encoding='utf8') as fp:
    for line in fp:
        result = re.findall(pattern, line)
        if result:
            funcNames.extend(result)
print(funcNames)
  • 正規表現を書いて、文字列がipv 4アドレスであるかどうかを判断します.ルール:1つのipアドレスは4つの数字で構成され、各数字の間に.接続されています.各数値のサイズは、0~255です.たとえば、255.189.10.37が正しい256.189.89.89.9エラーです.
  • import re
    re_str = r'((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])'
    result = re.fullmatch(re_str,'255.183.10.37')
    print(result)
    

    5.ある単語に最初のアルファベットではない大文字があると仮定し、作成プログラムは正規表現を使用してチェックし、小文字に修正します.
    import re
    def checkModify(s):
        return re.sub(r'\b(\w)(\w+)\b',
                      lambda x: x.group(1)+x.group(2).lower(),s)
    print(checkModify('aBc ABBC D eeee fFFFfF'))