代码之家  ›  专栏  ›  技术社区  ›  ufk

在以省道中的撇号开始和结束的正则表达式字符串中转义撇号

  •  -1
  • ufk  · 技术社区  · 7 年前

    我正在尝试为电子邮件地址创建正则表达式匹配,并打算在dart应用程序中使用它。

    (?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
    

    现在我对dart还很陌生,但我知道我可以用 r'' r"" .

    现在有了飞镖,我可以用飞镖逃离角色 \

    final String a = 'foo\'bar';
    

    final String a = r'foo\'bar' 我犯了一个错误。我怎样才能正确地逃脱呢?

    1 回复  |  直到 7 年前
        1
  •  8
  •   mbj    7 年前

    r'' 不表示“正则表达式”。 It means "raw"

    对于通常包含大量反斜杠的字符串(例如正则表达式模式),不必转义每个反斜杠非常有用。

    正则表达式被创建为 RegExp class .

    String pattern = r"(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|" + r'"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])';
    RegExp exp = new RegExp(pattern);