C# 针对XPath之后的标记的正则表达式?

C# 针对XPath之后的标记的正则表达式?,c#,html,regex,xml,xpath,C#,Html,Regex,Xml,Xpath,我已经为我的问题寻找了一段时间的解决方案,在regex101.com上玩了一段时间,但找不到解决方案 我面临的问题是,我必须为不同的输入选择一个字符串,因此我想用正则表达式从这些字符串中获取所需的数据。 正则表达式将分别来自每个字符串的配置。因为他们不同 下面的字符串是通过XPath://body/div/table/tbody/tr/td/p[5]获得的,但是我不能再深入到这个字符串中去检索正确的数据,或者我可以吗 我目前使用的字符串作为示例如下: <strong>Kontaktd

我已经为我的问题寻找了一段时间的解决方案,在regex101.com上玩了一段时间,但找不到解决方案

我面临的问题是,我必须为不同的输入选择一个字符串,因此我想用正则表达式从这些字符串中获取所需的数据。 正则表达式将分别来自每个字符串的配置。因为他们不同

下面的字符串是通过XPath://body/div/table/tbody/tr/td/p[5]获得的,但是我不能再深入到这个字符串中去检索正确的数据,或者我可以吗

我目前使用的字符串作为示例如下:

<strong>Kontaktdaten des Absenders:</strong> 
<br> 
<strong>Name:</strong> Wanted data 
<br> 
<strong>Telefon:</strong> 
<a dir='ltr' href='tel:XXXXXXXXX' x-apple-data-detectors='true' x-apple-data-detectors-type='telephone' x-apple-data-detectors-result='3'>XXXXXXXXX</a> 
<br>
(?<=<\/strong> )(.*)(?= <br>)
从这个字符串中,我试图获取想要的数据

到目前为止,我的正则表达式如下所示:

<strong>Kontaktdaten des Absenders:</strong> 
<br> 
<strong>Name:</strong> Wanted data 
<br> 
<strong>Telefon:</strong> 
<a dir='ltr' href='tel:XXXXXXXXX' x-apple-data-detectors='true' x-apple-data-detectors-type='telephone' x-apple-data-detectors-result='3'>XXXXXXXXX</a> 
<br>
(?<=<\/strong> )(.*)(?= <br>)
但这将返回整体:

<br> <strong>Name:</strong> Wanted data <br> <strong>Telefon:</strong> <a dir='ltr' href='tel:XXXXXXXXX' x-apple-data-detectors='true' x-apple-data-detectors-type='telephone' x-apple-data-detectors-result='3'>XXXXXXXXX</a>
我想我可以用一个重复的小组来解决这个问题

((:?(?<=<\/strong> )(.*)(?= <br>))+)
但这将返回与不使用repeat组时相同的输出

我知道我可以围绕这个正则表达式构建一个for{}循环,以获得相同的输出,但由于这是我必须为其执行此操作的唯一正则表达式,但这意味着我必须为所有其他数据更改它,我想知道是否可以在正则表达式中执行此操作

感谢您迄今为止的支持。

您手头有一个合适的XML解析工具XPath。用它完成工作:

这个XPath

strong[.='Name:']/following-sibling::text()[1]
当附加到原始XPath时

//body/div/table/tbody/tr/td/p[5]/strong[.='Name:']/following-sibling::text()[1]

将完成选择紧跟在名称后面的文本节点的工作:根据请求,标签,不需要对标记进行正则表达式修改。

您可以尝试匹配所有内容,但标记标记除外:

(?<=<\/strong> )([^<>]*)(?= <br>)

强制性-像HTML Agility Pack这样的HTML解析器是解析HTML-comment的最佳方式。我已经在使用HTML Agility Pack了,正如我所说,这是我能深入挖掘HTML的最深之处,因此无法通过这种方式获取想要的数据。我已经编辑了HTML代码,以便您可以看到我的意思,输入不应该在这里,只有一个字符串,但是为了让它更readable@AlexK. 这是对的。您甚至可以使用XPath。如果不知道要查找的模式,我们无法告诉您如何查找所需的字符串数据。大概它不会总是说想要的数据,它可能会说其他的东西,或者你不会搜索它。所以问题是,你的内容哪些部分是固定的,哪些部分是可变的?谢谢!这确实解决了我的问题,给了我想要的数据。考虑通过点击箭头和数字的绿色记号来接受答案。我很抱歉在我对你的回答中没有看到Kjuges的解决方案,但是他的解决方案更干净,解决了我的问题。我在寻找一个错误的方向。但我还是很感激你的正确回答。谢谢你,这确实是一个更干净的解决我问题的方法。不知道也可以使用XPath搜索文本。我想看看我是否可以在更多的数据上使用它,因为目前我已经用正则表达式解决了所有问题:自从你的评论和你对这篇文章的链接之后,我已经改变了很多不需要的正则表达式。但对于以下内容,我想知道是否还有一种方法可以用XPath解决:Data Name:Herr FirstName LastName XPath到目前为止://body//div/div/table/tr/td/div/table/tr[3]/td/div/table/tr/td/p[1]/span在这里我使用以下正则表达式:?@svenQ:很乐意帮助您找到另一个问题的XPath解决方案,但请将其作为一个新问题发布-在评论中尝试做太多事情会变得太混乱。谢谢。很抱歉,这是我的第一个问题,所以我想是这样做的:我已经在这里发布了我的问题作为答案,因为我还不能打开一个新问题。@svenQ:Np,但你会想发布一个新问题,而不是。谢谢