正则表达式搜索<>不包含另一个< >

时间:2014-09-22 03:08:05

标签: regex

嗨我有关于正则表达式的问题,我想找一个包含<>的字符串,比如

<kevin.tanjung@gmail.com>

如果正在寻找&lt;&gt;内的字符串,正则表达式工作正常贪婪,但是当有像这样的字符串时它会返回问题

<kevin.tanjung@gmail.com <mailto:kevin.tanjung@gmail.com>>

我希望我的正则表达式只能使&lt;&gt;罚款没有用&lt;&gt;括起来,因此在第二个字符串中:

<kevin.tanjung@gmail.com <mailto:kevin.tanjung@gmail.com>>

我希望它只返回<mailto:kevin.tanjung@gmail.com>而不是整个事物。

3 个答案:

答案 0 :(得分:3)

你可以在这里使用否定的字符类。

<[^<>]+>

说明:

<          # '<'
 [^<>]+    #    any character except: '<', '>' (1 or more times)
>          # '>'

Live Demo

答案 1 :(得分:1)

您可以使用此正则表达式:

<[^<]+?>

它会匹配起始<,然后匹配任何非>非贪婪和结束>。这实际上将为您提供内在的部分。

答案 2 :(得分:0)

通过电子邮件验证取消char类

\<([^<>]([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+)\>