首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript regex查找特定的html标记详细信息

javascript regex查找特定的html标记详细信息
EN

Stack Overflow用户
提问于 2013-08-07 11:30:17
回答 3查看 4.1K关注 0票数 0

我想要一个regex来找出特定的html标记细节。

我试过叫2 regex:

代码语言:javascript
复制
<\s*tag[^>]*>(.*?)<\s*/\s*tag>

<tag[^<>]*>.+?<\/tag>

贝娄是用于第一次正则表达式的2测试用例

第一个示例中,我得到了正确的结果,但是在示例2中,我得到了错误的结果。在这两种情况下,输入几乎是相同的。

第一种情况:均为单独字符串,第二种情况为:作为单字符串

代码语言:javascript
复制
===================================
Example 1 Input
===================================
<tagX>AAA</tagX>
<tag>GGG</tag>
<tag id="tag896">HHH</tag>
<tagY>III</tagY>
<tag id="tag017">JJJ</tag>
<tag>KKK</tag>
===================================
Output 1 // Correct
===================================
<tag>GGG</tag>
GGG
<tag id="tag896">HHH</tag>
HHH
<tag id="tag017">JJJ</tag>
JJJ
<tag>KKK</tag>
KKK


===================================
Example 2 Input (as a single string)
===================================
<tagX>AAA</tagX><tag>GGG</tag><tag id="tag896">HHH</tag><tagY>III</tagY><tag id="tag017">JJJ</tag><tag>KKK</tag>
===================================
Output 2 // Wrong
===================================
<tagX>AAA</tagX><tag>GGG</tag>
AAA</tagX><tag>GGG

<tag id="tag896">HHH</tag>
HHH

<tagY>III</tagY><tag id="tag017">JJJ</tag>
III</tagY><tag id="tag017">JJJ

<tag>KKK</tag>
KKK

在这里,我想要(标记)的详细信息,但在第二种情况下,它获取(tag) + (tagX) + (tagY)详细信息。

我的输入类似于第二输入.

它的紧急..。我能找到解决办法吗。

谢谢..。

EN

回答 3

Stack Overflow用户

发布于 2013-08-07 12:02:04

在您编写的正则表达式中,您的问题是,如果“”应该在同一行上关闭,则允许<tagX> (例如)作为开始标记。

在本例中使用正则表达式的问题是,如果XML是:

代码语言:javascript
复制
<tag></tag>
<tagX></tagX>
<tag></tag>

如果所有的标签都是内联的,你可以得到所有的东西,所以要非常小心。

我会使用类似的东西(上面的例子是这样的):

代码语言:javascript
复制
 <\s*tag((\s+[^<>]+\s*>)|(\s*>))[^<>]*<\s*\/tag\s*>

在这里,我允许所有有效的空白空间,但我不允许嵌套标记,所以上面的示例将有效。此外,如果允许嵌套标记,则不允许REGEX工作。请看下面的示例:

代码语言:javascript
复制
<tag> <tagX> <tag> </tag> </tagX> </tag>

不过,在本例中,您将获得<tag> <tagX> <tag> </tag>作为一个有效的答案。

票数 1
EN

Stack Overflow用户

发布于 2013-08-07 12:38:28

我试过下面的规则,它的工作很好.

代码语言:javascript
复制
<tag( [^<>]+)?>(.+?)<\/tag>
票数 1
EN

Stack Overflow用户

发布于 2013-08-07 12:21:22

如果您正在使用.NET (出于某种原因,您确信您的XML不需要使用Html敏捷包),您可以尝试如下:

代码语言:javascript
复制
<tag(?:>|(?: .*?>))(.*?)</tag>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18102251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档