正则表达式合集帖(希望本帖能存活十年以上)

查看 122|回复 12
作者:oakland   
[ol]
  • 欢迎大家在这篇文章下面评论留言,给出自己在日常 coding 的过程中写过的正则表达式,并给出说明和示例,注明对应的语言,如果能给出如何写出来的详细解释更好。
  • 欢迎大家留言给出自己想要实现的正则表达式(注明语言),然后群友给 ta 解答。
  • 欢迎大家“优化”已经留言的正则表达式。
  • 我希望这篇文章成为所有 “讨厌” 和 “喜爱” 正则表达式的同学的聚集地,并最终能让所有人理解和熟悉正则表达式。
    [/ol]
  • zapper   
    关于 2 和 3 ,为什么我不去问神奇的 GPT 呢
    Kaiv2   
    lua 语言,jdtls 取 Class 名称
    %[([%a%$_]?[%.%w%(%)*"+,\\_%[%]%s :%-@]*)%]%(jdt://[^%)]+%)
    测试字符 [String](jdt://xxxxxxxx)
    ShinichiYao   
    自从有了 ChatGPT 再也不用烦心正则怎么写了
    oakland
    OP
      
    /^(\+|-)?\d+(\.\d+)?(E(\+|-)?\d+)?$/i
    我先来一个,这个表示所有 JavaScript 中的所有数字格式,可以带正负号,可以是整数,可以是浮点数,可以是带 E|e 的科学计数法格式。比如
    “1”
    “+1”
    “-1”
    “-2.4879983487”
    “2.34E-2”(表示 2.34 * 10^-2 ,也就是 0.0234)
    “2.34e3”(表示 2340)
    oakland
    OP
      
    @zapper 支持直接粘贴 chatgpt 的回答,也希望大家能帮 chatgpt 找 bug ,但我希望是 4 ,这个对大家作为 programmer 有帮助。
    oakland
    OP
      
    @Kaiv2 好酷,有空的时候欢迎给出详细的解释
    DavidDee   
    /^-?\d+(\.\d+)?(e-?\d+)?$/i
    /^-?\d+(\.\d+)?(e[+-]?\d+)?$/i
    @oakland #4 gpt3.5 的答案,不知道对不对
    igeeky   
    # 下面的正则是把用户输入的(无意义)大于 2 个字的重复的内容变成单个. 没想到有什么好的,简单的算法实现. 使用正则就比较简单.(python 代码)
    userInputText = """
    测试测试测试
    哈哈哈哈哈哈哈哈哈哈哈哈
    哈哈哈
    你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?
    """
    import re
    regex = r"(?P.{2,100}?)(?P=r){2,}"
    subst = "\\1"
    outputText = re.sub(regex, subst, userInputText, 0, re.MULTILINE)
    print("## input")
    print(userInputText)
    print("## output:")
    print(outputText)
    # 输出:
    ## input
    测试测试测试
    哈哈哈哈哈哈哈哈哈哈哈哈
    哈哈哈
    你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?
    ## output:
    测试
    哈哈
    哈哈哈
    你在干嘛呢?
    oakland
    OP
      
    @DavidDee 这个回答不支持开头为 “+” 的这种格式,比如 “+1”,覆盖范围不全
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部