如何在文本中找到任何单词但区分标签?

时间:2014-10-08 10:39:59

标签: php regex seo keyword-search

我想在文本中找到任何单词长度(eq 4),也可以在<strong><h1>等标签之间找到。之后我想做一种加权这句话。普通单词的得分低于<strong>之间的单词。但是这些词不应该只是一个更加得分的标签(如强者)。

示例内容

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor
invidunt ut labore et dolore <strong>magna aliquyam erat</strong>, sed diam voluptua. 
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
invidunt ut labore et dolore <strong>magna</strong> aliquyam erat, sed diam voluptua

我可以用regexp这样做,比如查找任何单词并检查preg回调是否在标签内或者如何可能?

非常感谢!

2 个答案:

答案 0 :(得分:0)

(?<=\/|<)(\w{4,})(?=>)|\b(\w{4,})

您可以尝试此操作。匹配的Part 1始终来自代码。匹配的Part 2将是其他常规字词。

参见演示。

http://regex101.com/r/hQ1rP0/74

答案 1 :(得分:0)

<\w*>([a-zA-Z0-9 ]{4,})</\w*>

你用这个来标记标签之间的文本,然后你计算该文本中的空格数,知道它有多少单词并给它你的相应权重,你用 {4,}来控制最小长度在这种情况下是4或更多

对于普通单词,您只需使用

\w{4,}

这就是全部吗?

哦,你可能想要这样的东西吗?

<\w*>(?<case1>[a-zA-Z0-9 ]{4,})</\w*>|(?<case2>\w{4,})

在case1组中,标签之间有单词,而case2中的单词不在标签之间。顺便说一句,我不确切知道PHP中的捕获组是如何完成的,所以正则表达式可能看起来有点不同而且&#34; /&#34;可能是PHP中的转义字符,因此如果它是

,则需要在它之前使用\

http://regex101.com/r/iR5lW1/1