python利用正则表达式替换文本内容以及邮箱格式判定

Introduction


项目功能说明:
1、利用正则表达式,替换在同目录中已经给出的java.txt文本中对应的内容。
2、判断邮箱格式是否正确

安装流程


下载python运行环境


安装python运行环境(解释器):
可用教程: 超详细的Python安装和环境搭建
推荐安装Python3.9或以上版本

下载项目文件


在ftp下载对应压缩包

依赖库安装


打开cmd,切换命令行到本工程所在目录:

cd clstmeSystem

执行以下命令安装依赖:

python -m pip install -U pip
pip install -r requirements.txt

运行程序


直接点击main.py文件执行,或者进入在cmd中输入

python main.py


使用手册


1、主页面


2、替换文本内容


注:
1、必须先在程序同目录下建好java.txt文本文件!且确保同目录下没有test.txt文件!
2、逐行查找文本内容。若没有找到对应的替换函数,则报错,不做修改直接将本行写入结果文件,并继续执行程序。
3、test.txt的生成方式是追加写入,所以如果多次执行该功能,会直接在test.txr文件后增加内容。

3、判断邮箱格式


看代码吧

4、java.txt文本文件内容:

class StringExample
{
    public static void main(String args[ ])
    {
        String s1=new String("you are a student"),
             s2=new String("how are you");
        if (【代码1)  // 判断s1与s2是否相同
         {
            System.out.println("s1与s2相同");
         } 
        else
         {
           System.out.println("s1与s2不相同");  
         }
         String s3=new String("22030219851022024");
         if (【代码2)   // 判断s3的前缀是否是“220302”
         {
             System.out.println("吉林省的身份证");
         }
         String s4=new String("你"),
              s5=new String("我");
         if(【代码3)   // s4大于s5
         {
             System.out.println("s4大于s5");
         }
         else
         {
             System.out.println("s4小于s5");
         }
         int position=0;
         String path="c:\\java\\jsp\\A.java";
         position=【代码4// 获取path中最后出现目录分隔符号的位置
         System.out.println("c:\\java\\jsp\\A.java中最后出现\\的位置:"+position); 
         String fileName=【代码5// 获取path中“A.java”子字符串
         System.out.println("c:\\java\\jsp\\A.java中含有的文件名:"+fileName); 
         String s6=new String("100"),
              s7=new String("123.678");
         int n1=【代码6// 将s6转化成int型数据
         double n2=【代码7// 将s7转化成double型数据
         double n=n1+n2;
         System.out.println(n);
         String s8=new String("ABCDEF");
         char a[ ]=【代码8// 将s8存放到数组a中
         for(int i=a.length-1;i>=0;i--)
          {
             【代码9//  打印 a[I]
          }
    }
}

5、代码内容:

import re
import time


def func1(line, r):
    res = line[:r.span()[0]] + 's1 == s2' + line[(r.span()[1]):]
    return res

def func2(line, r):
    res = line[:r.span()[0]] + 's3.startsWith("220302")' + line[(r.span()[1]):]
    return res

def func3(line, r):
    res = line[:r.span()[0]] + 's4 > s5' + line[(r.span()[1]):]
    return res

def func4(line, r):
    res = line[:r.span()[0]] + 'path.lastIndexOf ("\\\\");' + line[(r.span()[1]):]
    return res

def func5(line, r):
    res = line[:r.span()[0]] + 'path.intern();' + line[(r.span()[1]):]
    return res

def func6(line, r):
    res = line[:r.span()[0]] + 'Integer.parseInt(s6);' + line[(r.span()[1]):]
    return res

def func7(line, r):
    res = line[:r.span()[0]] + 'Double.parseDouble(s7);' + line[(r.span()[1]):]
    return res

def func8(line, r):
    res = line[:r.span()[0]] + 's8.toCharArray();' + line[(r.span()[1]):]
    return res

def func9(line, r):
    res = line[:r.span()[0]] + 'System.out.println(a[i]);' + line[(r.span()[1]):]
    return res

def changes():
    f = open('java.txt', 'r',encoding='utf-8')
    lines = f.readlines()
    f.close()
    newfile = open('test.txt', 'a', encoding='utf-8')
    for line in lines:
        #逐行读取txt文件
        #line = line.strip()#去除换行符,但有可能是\r或\r\n
        r = re.search('【代码(\w*)】', line)    #逐行找需要替换的代码块
        #找到了
        if r is not None:

            rz = re.search('\d+\.?\d*', r.group())  #找他是第几个代码块
            func = "func" + rz.group() + "(line, r)"   #拼接对应函数字符串
            #试执行对应函数
            try:
                resLine = eval(func)
                newfile.write(resLine + '\n')
            #若出错。
            except:
                print("没有第" + rz.group() + "代码块!请检查文本或新写函数!")
                newfile.write(line)
        else:
            newfile.write(line)
    newfile.close()
    print("退出程序后即会在本目录下保存生成新文件test.txt")
    return

def judge():
    str=r'^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}$'
    print("请输入邮箱:")
    ins = input()
    if re.match(str,ins):
        print('匹配')
    else:
        print('不匹配')
    return

def main():
    while(1):
        print("*****************")
        print("请输入对应操作数字:")
        print("0:退出")
        print("1:替换模板")
        print("2:检查邮箱格式")
        print("*****************")
        a = input()
        if(a == "0"):break
        elif(a == "1"):
            changes()
        elif(a == "2"):
            judge()
        else:print("输入错误,请重新输入!")
        time.sleep(1.5)


main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值