相关推荐recommended
正则表达式的一些高级用法
作者:mmseoamin日期:2024-02-22
  1. 不允许出现某个单词,使用?!

    (?!Pattern).\.matches

    表示.matches之前的不能是Pattern

  2. 非贪婪匹配,在匹配项后加?

    matches\((.*?)\)

    这里在.*后加问号,表示尽可能少的匹配。

  3. \w表示字母、数字和下划线
  4. 防范redos攻击,可使用Cyber-Redos-Terminator检查开发使用的正则表达式。java代码里排查可能的redos攻击,可使用下面三个正则式:
    REG_CALL_PAT1 = re.compile("Pattern\.compile\((.*)\)")
    REG_CALL_PAT2 = re.compile("Pattern\.matches\((.*),.*\)")
    REG_CALL_PAT3 = re.compile('(?!Pattern).\.matches\((".*"|[\w\.]+)\)')