为什么电子邮件regex
提供error
invalid regular expression '^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$', reason 'Invalid character range'
blogs.smpl <- "mail:mami@yahoo.com: subject:Lorem Ipsum body: is simply dummy text of the printing and typesetting industry.
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s"
blogs.smpl <- gsub("^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$","",blogs.smpl)
答案 0 :(得分:4)
因为-
应该只在字符类的开头或结尾。否则,它表示在它之前和之后的符号之间的范围。
上一个字符类有问题:[a-zA-Z0-9-.]
。必须转为[a-zA-Z0-9.-]
。
注意:在R中,除非使用perl=TRUE
,否则无法转义字符类中的连字符以匹配文字连字符。
另外,有关R字符类(第2页)和一般正则表达式的详细信息,请参阅R String Manipulation PDF。这是一段摘录:
以下是关于如何将字符匹配为常规的一组规则 字符类中的字符:匹配字符内的
]
上课把它放在第一位。要在字符类中匹配
-
,请将其放在第一位 或者持续。要在字符类中匹配
^
,请将其放在任何位置,但首先。匹配任何其他字符或元字符(但
\
) 字符类把它放在任何地方。
答案 1 :(得分:1)
原因是这一部分:
[a-zA-Z0-9-.]
尝试将短划线放在最后:
[a-zA-Z0-9.-]