如何使用正则表达式解析类似 Xml 的标签

发布于 2024-09-24 22:38:58 字数 140 浏览 8 评论 0原文

我需要标记以下标签:

{TagName attrib1=”value1” attrib2=”value 3”}.

我想编写正则表达式来执行此操作,但问题是属性值可以包含空格,所以我不能只用空格分割。

I need to tokenize following tag:

{TagName attrib1=”value1” attrib2=”value 3”}.

I would like to write regex to do it, but the trouble is that attribute value can contain space, so I can’t just split with space.

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

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

发布评论

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

评论(1

漫雪独思 2024-10-01 22:38:58

不能比这更清楚了:

http ://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html

请解释为什么你需要正则表达式......

而且,你没有说出你的首选语言...

假设 perl:

$str = "{TagName attrib1=\"value1\" attrib2=\"value 3\"}";

if ($str =~ m/{(\w+)\s+(\w+)="(.*?)"\s+(\w+)="(.*?)"/)
{
    print "tagname: $1\n";
    print "attrib: $2\n";
    print "value: $3\n";
    print "attrib: $4\n";
    print "value: $5\n";
}

但同样,不要使用正则表达式!

can't be put more clearly than this:

http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html

please explain why you need regexp...

and, you didn't say anything about your preferred language...

assuming perl:

$str = "{TagName attrib1=\"value1\" attrib2=\"value 3\"}";

if ($str =~ m/{(\w+)\s+(\w+)="(.*?)"\s+(\w+)="(.*?)"/)
{
    print "tagname: $1\n";
    print "attrib: $2\n";
    print "value: $3\n";
    print "attrib: $4\n";
    print "value: $5\n";
}

But again, don't use regexps for this!!

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