Python---------第8章正規表現教室実験
8376 ワード
1.正規表現を使用して、テキスト内で最も長い数値文字列を検索します.
2.1つの英語のテキストの単語を逆にし、句読点を逆にしないで、単語の間に1つ以上のスペースを使用して分割すると仮定します.例えば、I like beijing.は関数を経て、beijing.like Iになります.
3.プログラムを作成し、正規表現を使用して別のPythonプログラムのすべての関数名を抽出します.正規表現を書いて、文字列がipv 4アドレスであるかどうかを判断します.ルール:1つのipアドレスは4つの数字で構成され、各数字の間に.接続されています.各数値のサイズは、0~255です.たとえば、255.189.10.37が正しい256.189.89.89.9エラーです.
5.ある単語に最初のアルファベットではない大文字があると仮定し、作成プログラムは正規表現を使用してチェックし、小文字に修正します.
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)
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'))