gpt4 book ai didi

regex - 在 dart 中以撇号开头和结尾的正则表达式字符串中转义撇号

转载 作者:行者123 更新时间:2023-12-03 03:08:57 27 4
gpt4 key购买 nike

我正在尝试为电子邮件地址创建正则表达式匹配,我打算在 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"" 创建正则表达式字符串。

现在使用 dart 我可以使用 \ 转义字符,所以如果我想转义以撇号开头和结尾的字符串中的撇号,我可以这样做:

final String a = 'foo\'bar';

但是对于 final String a = r'foo\'bar' 我得到一个错误。我怎样才能正确地逃避它?

谢谢

最佳答案

不,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);

关于regex - 在 dart 中以撇号开头和结尾的正则表达式字符串中转义撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53898072/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com