Apache Camel 正则表达式运算符不匹配
我正在尝试使用 Apache Camel(带有 Spring XML)来检查消息正文是否与正则表达式匹配:
<when>
<simple>${body} regex 'https?://(?:www\.)?twitter\.com[^\w]+'</simple>
<to uri="activemq:queue:test"/>
</when>
因此消息正文中的 http://www.twitter.com/user
应该是移至“测试”队列。
正则表达式在 Rad 正则表达式设计器中匹配,但 Camel 仍然没有将消息移动到“测试”队列。有什么想法为什么这不起作用吗?
I'm trying to use Apache Camel (with Spring XML) to check if a message body matches a regex:
<when>
<simple>${body} regex 'https?://(?:www\.)?twitter\.com[^\w]+'</simple>
<to uri="activemq:queue:test"/>
</when>
So http://www.twitter.com/user
in the body of a message should be moved to the 'test' queue.
The regex matches in Rad Regular Expression Designer, but Camel is still not moving the message to the 'test' queue. Any ideas why this isn't working?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
java.util.regex 需要完全匹配,因此如果 Apache Camel 使用的是(?),那么您的假设是正确的。最简单的解决方法不是在正则表达式之前和之后放置“.*”吗?
java.util.regex requires a full match, so if that is what Apache Camel uses (?) then your hypothesis is correct. Wouldn't the easiest fix be to put ".*" before and after the regex?
对我有用的解决方案是:
其中包含一些细微的修改。最大的是末尾的通配符 .*,这样它就可以匹配后面的任何内容(只要它前面有斜杠)。
感谢您的帮助和建议。*
The solution that worked for me was:
which contains some slight modifications. The biggest is the wildcard .* at the end, so that it matches anything afterwards (as long as it has the slash first).
Thanks for the help and for suggesting the .*