.net 在同一行上两次匹配没有html标记跨度的字符串

.net 在同一行上两次匹配没有html标记跨度的字符串,.net,html,regex,string,paragraph,.net,Html,Regex,String,Paragraph,我使用的是与.net正则表达式兼容的,尽管实际上使用的是editpadpro。 我正在将.pdf格式转换为一个简单的网页,但是pdf文件中的一些文本没有正确显示,例如,一些黑色字体的字符串后面应该跟黑色的文本描述。 但是很多行不在一起,所以黑字串就更不用说了: word 这个词的描述 我想要实现的是 单词单词描述 因为是一个html文件,所以我要处理标记 </span> or <br/> 或 我确实需要只选择那些单独的词,而不干扰那些已经很好的词 所以我想针对的是像这

我使用的是与.net正则表达式兼容的,尽管实际上使用的是editpadpro。 我正在将.pdf格式转换为一个简单的网页,但是pdf文件中的一些文本没有正确显示,例如,一些黑色字体的字符串后面应该跟黑色的文本描述。 但是很多行不在一起,所以黑字串就更不用说了:

word

这个词的描述

我想要实现的是

单词单词描述

因为是一个html文件,所以我要处理标记

</span> or <br/>

我确实需要只选择那些单独的词,而不干扰那些已经很好的词

所以我想针对的是像这样的线

<p><span class="font7" style="font-weight:bold;">text text text text </span></p>\r\n<p>
text

\r\n
其中,重复4次的“文本”是一个黑色字体文本,其行与目标对齐。 但我想避免这样的台词

<p><span class="font7" style="font-weight:bold;">text text text text </span><span class="font7"> text text text <br/> text text text </span></p>\r\n<p>
文本
text文本\r\n
我一直在尝试的是使用 正则表达式使用jgsoft或.net兼容的表达式,因为我尝试使用lookahead(虽然不是必需的),但这似乎不起作用,我想知道为什么

<p><span class="font7" style="font-weight:bold;">.+?(?:(?!.+?</span>.+?$)){2}</p>\r\n<p>
+?(?:(?!。+?。+?$){2}

\r\n
这是我做的另一次尝试,效果不太好

<p><span class="font7" style="font-weight:bold;">(?!.+(</span>).+\1)</p>\r\n<p>
(?!.+()。+\1)

\r\n
我试着在字符串的开头使用lookahead进行匹配,但是在最后我做了很多尝试,我更喜欢问像你这样的人,他们可能知道如何解决这个问题

所以在最后,我想要的是将这部分从这些行中删除到目标

</p>\r\n<p>

\r\n
因为那些双段不是必需的,只是在那些特定的行中。 通过这样做,将看起来像这样

单词单词描述

如果您可以提供.net风格或perl风格,那么使用文本编辑器就可以了,不过如果您有其他建议也可以


来自cuernavaca mexico的问候,对不起我的英语,谢谢你的帮助。

如果你把它分成小块,像这样的东西可能会有用:

var valid = "<p><span class=\"font7\" style=\"font-weight:bold;\">text text text text </span></p>\r\n<p>";
var invalid = "<p><span class=\"font7\" style=\"font-weight:bold;\">text text text text </span><span class=\"font7\"> text text text <br/> text text text </span></p>\r\n<p>";
var input = valid + invalid;

foreach (Match match in Regex.Matches (input, "<p>(?!<p)(.*?)</p>")) {
    var line = match.Groups [1].Value;
    Console.WriteLine ("MATCH: {0}", line);

    var spans = Regex.Matches (line, "<span.*?>(.*?)</span>");
    Console.WriteLine ("SPANS: {0}", spans.Count);
}
var valid=“text

\r\n”; var invalid=“文本
text

\r\n”; var输入=有效+无效;
foreach(在Regex.Matches中匹配)(输入,“(?!有必要使用一个正则表达式吗?如果你简单地把它分成几部分,事情会变得简单得多。谢谢martin的回答,我真的很感激,问题是我不是程序员,我试图用文本编辑器(如ultra edit或editpad)来解决这个问题。@alex那么你的位置错了。Stackoverflow是一个关于编程问题的网站。L.B和regex是编程的一部分,不是吗?我的意思是我不是一个专业的程序员,但我喜欢做小脚本,任何人都可以用文本编辑器来做,使用regex是你想要搜索的编程方式。所以在某种程度上,我是在正确的地方,我只是通过u唱这个页面的搜索按钮,尝试学习一些编程,但不要太深入,比如使用数组、变量等等。谢谢