正则表达式只捕获最后几个值

时间:2013-05-11 04:12:41

标签: c# html .net regex

我有一个大文件

 <title>words words </title>

作为描述符我试图找到一个正则表达式来给我这些标签之间的数据我发现了这个

<title.*?>(\w+)</title>

哪个会起作用,但只会选择几个匹配我认为它,因为标签通常是这样的

adaddad<title>Word word word</title>sdfdsfdsfs

通常两边都有随机垃圾。我真的很擅长正则表达式并且还在努力学习它我发现了很多非常接近的帖子,但是没有任何东西可以解决我的问题。

:origLink></item>\r\n<item><title>words word word</title><guid is

这是我的一个字符串看起来像

的更好的例子

3 个答案:

答案 0 :(得分:1)

我认为问题在于您尝试使用\w来捕获带有字符和空格的文本。它应该是:

<title.*?>([\w\s]+?)</title>

这将强制像这样的文本

adaddad<title>Word word word</title>sdfdsfdsfs

用词和空格捕获

答案 1 :(得分:1)

尝试让你的正则表达式贪婪

 <title.*?>.+?</title>

此外,\ w +与空格“”

不匹配

尝试使用expresso来微调你的正则表达式http://www.ultrapico.com/Expresso.htm

答案 2 :(得分:-1)

改为使用

^[^<]*<title.*?>([^<]*)</title>.*$

解释

^ at the beginning means begining of line
[^<] any character but '<'
.*$ any garbage after the tag is closed

这将捕获空标题以及标签之间可能存在的任何奇怪的字符串。

<title>Normal title</title>
<title></title>
<title>Weird #@!@#%@%^[]{}""///? title ≥╙♥</title>