环境:Java
我想匹配两个字符串之间的字符,这是一个例子
foo <bar <foo@bar.com> xoo <xoo@bar.com>
我需要两个字符串:foo@bar.com和xoo@bar.com
我正在使用这个正则表达式:
(。*?);&LT&GT;
但这让我回头了
bar <foo@bar.com
和
xoo@bar.com
所以基本上我想匹配两个字符串之间的字符,但我需要内部字符。
非常感谢任何帮助?
答案 0 :(得分:3)
您可以使用此基于否定的正则表达式进行匹配:
<[^<>]*>
或使用lookarounds仅向您发送电子邮件:
(?<=<)[^<>]*(?=>)
答案 1 :(得分:3)
使用以下正则表达式:
<([^<>]+)>
捕获组应返回所需的字符串。
你的正则表达式的问题在于你没有考虑到在开始<
之后遇到另一个 <
字符的可能性。您的正则表达式与<
匹配,然后匹配任何字符(非贪婪)的零或更多,后跟>
。但.*
部分也会与另一个<
匹配。因此,您希望基本匹配以<
开头的字符串,然后只包含 <
或>
以外的字符,最后以{{1}结尾}。
以下是一些示例代码:
>
您可以在Java here中看到这一点。
答案 2 :(得分:1)
≤([^&LT;&GT;] *)&GT;会做的。
自“。”算术ANYTHIN(也是“&lt;”和“&gt;”)“bar”。 通过使用“[^&lt;&gt;]”你会说出任何东西(比如“。”)但是广场内的字符 - 在帽子之后。
一个测试RegEx的好网站是http://www.regexr.com/:)