2015-03-03 35 views
0

我试图拉出2个其他字符串之间的字符串。但为了使其更加复杂,程序内容往往会有所不同。获取未知字符串之间的值

enter image description here

我试图检索的字符串是基督城

我到目前为止所使用的正则表达式是(?<=300px">).*(?=</td),它会拉出字符串,我看起来不错,但它也会返回数十个其他字符串,通过我正在搜索的LARGE文本文件。

我想要做的是限制前缀开始从办公室seraching:,一路300像素“>但是,内容之间的2串有时会有所不同取决于用户的喜好。

说得原油非正则表达式方面,我要做到以下几点:。在Office:开始一路300px>发现,从这里开始,并与</td结束串所以导致基督城

回答

0

承蒙adamdc78和Greg的帖子中,我已在能来与下面的正则表达式。这正是我需要的。

感谢您的帮助。

(?<=office.*\n.*300px">).*(?=<\/td) 
+1

欢迎来到StackOverflow:你应该接受他们的答案(因为他们帮助),而不是添加*谢谢你回答* – chouaib 2015-03-03 01:45:35

0

你遇到的问题是*是贪婪的。使用懒惰/不情愿的版本*?

Office:[\s\S]*?300px">(.*?)</td 

该解决方案使用组匹配而非环视。

+0

这没有帮助。正如在帖子中提到的那样,正则表达式'(?<=300px">)。*(?= 2015-03-03 00:38:38

+0

仍然不完全是我在找什么。修正后的正则表达式返回**从办公室的所有**到 2015-03-03 01:20:02

+0

我已经包含了一个链接到我正在使用的html代码的截图。我无法附上照片,因为我的代表太低。 – 2015-03-03 01:34:40

3

您是否考虑过使用HTMLAgilityPack?这是一个处理HTML的Nuget包,它能够很好地处理格式错误的HTML。大多数堆栈溢出会建议不要使用正则表达式的HTML - 在这里看到:RegEx match open tags except XHTML self-contained tags

+1

这样做的好处是,你可以在你的班级里找到这个标签,只需要拿出它的价值。 – adamdc78 2015-03-03 00:36:51

0

我想你需要的东西是这样的:

office.*\n.*|(?<=300px">).*(?=<\/td) 
+0

与adamdc78提供的答案类似,这不完全是我想要的。我只想检索字符串**基督城**。 – 2015-03-03 01:22:33

+0

**从办公室开始:一直到300px>找到从这里开始并以 chouaib 2015-03-03 01:23:42

+0

您能否在我的初始文章中看到源代码? – 2015-03-03 01:27:13

相关问题