代码之家  ›  专栏  ›  技术社区  ›  Mangu Singh Rajpurohit

正则表达式如何处理regex模式中间的“^”或“$”?

  •  1
  • Mangu Singh Rajpurohit  · 技术社区  · 7 年前

    我正在尝试使用python中的正则表达式。我构建了正则表达式,如下所示。我知道 ^ 用于在搜索字符串的开头进行匹配。我已按匹配模式装帧,其中包含多个 ^ ,但我不知道怎么做 re 将尝试匹配搜索字符串中的模式。

    re.match("^def/^def", "def/def")
    

    我早就料到了 re公司 将引发有关无效正则表达式的错误,但它不会引发任何错误,也不会返回任何匹配项。

    所以,我的问题是 "^def/^def" "$def/$def" 有效的正则表达式?

    1 回复  |  直到 7 年前
        1
  •  5
  •   Martijn Pieters    7 年前

    您没有无效的正则表达式, ^ 在字符串中间具有合法用途。当您使用 re.M flag 例如:

    指定时,模式字符 '^' 在字符串开头和每行开头匹配(紧跟在每一换行之后);以及图案特征 '$' 在字符串末尾和每行末尾(紧跟在每一换行之前)匹配。

    还可以创建带有可选组的模式,其中 ^ 如果前面的所有模式都匹配空字符串,则仍将匹配。使用 ^ 在它无法匹配的地方,解析器不会进行检查,也不会出现错误。

    您的特定模式永远不会匹配任何内容,因为 ^ 中间是无条件的,不可能 / 即使启用了多行标志,前面的字符也将与必需的换行符匹配。