用于提取 POP3 标头的正则表达式

发布于 2024-07-16 23:09:37 字数 284 浏览 8 评论 0原文

我正在尝试弄清楚如何使用此正则表达式

^(?[a-zA-Z-]+)(?(?=:).+)$

Delivered-To: [email protected]

该组还返回我想避免的“:”字符。 我正在努力解决这个问题,但做不到。

需要集体智慧:-)

I'm trying to work out how to extract POP3 headers using this regex

^(?[a-zA-Z-]+)(?(?=:).+)$

Delivered-To: [email protected]

The group returns the ':' character as well which I want to avoid. I'm busting trying to work this out but can't.

Need collective wisdom :-)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(3

枯叶蝶 2024-07-23 23:09:37

请注意,这不会处理包装的标头。 事实上,该正则表达式将采用包装的标头,并将其添加到真正的标头中。 特别是如果包装的标头在以下几行中没有“:”。

以 Sergej Andrejev 的正则表达式为基础,这个正则表达式将处理不捕获换行的情况:

^([^:\s+]+):(.*)$

但是,最好的做法是实际逐行读取标题,并进行相应的解析。 这很痛苦(因为我必须为生产代码这样做),但它是最准确的。

Just so you are aware, this will not handle wrapped headers. In fact, that regex will take a wrapped header, and prepend it to a real header. Especially if the wrapped header doesn't have a ":" in the following lines.

Building upon Sergej Andrejev's Regex, this one will handle not capturing the wrapped lines:

^([^:\s+]+):(.*)$

However, the best thing to do, is to actually read the headers line by line, and parse accordingly. It's a pain (as I've had to do it for production code), but it's the most accurate.

送舟行 2024-07-23 23:09:37

我会选择类似的

/^([^:]+):(.*)$/ 

然后你会有

  • $1 - 标头名称
  • $2 - 值

I would go with something like

/^([^:]+):(.*)$/ 

Then you would have

  • $1 - header name
  • $2 - value
毁梦 2024-07-23 23:09:37

抱歉,复制了错误的代码:
^(\S+):\s((\s\S)*)
它适用于多线。

Sorry, copied the wrong code:

^(\S+):\s((\s\S)*)

It works with multi lines.

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