regex 如何测试正则表达式列表,如果它们都是有效的(逐行)?

hfsqlsce  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(78)

对于我们的反垃圾邮件程序,我们有一个正则表达式列表。对于传入的电子邮件,每个正则表达式都针对主题和正文进行测试。目前,这个列表包含大约200行,每行由一个正则表达式组成。
我怀疑列表中的某个地方有一个无效的正则表达式。
现在,我正在寻找一种方法,如何测试每一行是否包含有效的正则表达式,并在正则表达式无效的每一行得到通知。
有了所有的工具和网站测试,如果一个字符串匹配一个正则表达式,我找不到,我正在搜索的东西。
你知道这样的方法吗?

57hvy0tb

57hvy0tb1#

由于我最近更像是一个管理员,我首先想到的是“随时可用”的东西。;-)
因为我最近安装了Python,并且我记得一个演示文稿,其中ChatGPT生成了一些代码,所以我决定给予一下。它奏效了:

import re

def main():
    print("Please enter a multi-line string (Enter 'EOF' to finish):")
    input_lines = []
    while True:
        line = input()
        if line == "EOF":
            break
        input_lines.append(line)

    valid_count = 0
    invalid_count = 0

    for i, line in enumerate(input_lines, start=1):
        try:
            re.compile(line)
            valid_count += 1
        except re.error:
            invalid_count += 1
            print(f"Line {i}: Invalid regular expression - {line}")

    print("\nSummary:")
    print(f"Valid regular expressions: {valid_count}")
    print(f"Invalid regular expressions: {invalid_count}")

if __name__ == "__main__":
    main()

第一条提示:
编写一个Python程序,它将执行以下任务:
1.让我输入一个多行字符串。
1.对于每一行:a.测试行是否包含有效的正则表达式。B.如果正则表达式无效,则输出行号和行内容。
第二条提示:
修改程序,它总结了有效和无效的行数在年底

相关问题