Apache Camel 正则表达式运算符不匹配

发布于 2024-11-30 13:54:28 字数 385 浏览 0 评论 0原文

我正在尝试使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夜空下最亮的亮点 2024-12-07 13:54:28

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?

浪菊怪哟 2024-12-07 13:54:28

对我有用的解决方案是:

<simple>${body} regex '(?:https?://)?(?:w{3}\.)?twitter\.com(?:/.*|/)?'</simple>

其中包含一些细微的修改。最大的是末尾的通配符 .*,这样它就可以匹配后面的任何内容(只要它前面有斜杠)。

感谢您的帮助和建议。*

The solution that worked for me was:

<simple>${body} regex '(?:https?://)?(?:w{3}\.)?twitter\.com(?:/.*|/)?'</simple>

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 .*

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文