我尝试使用忽略案例捕获多个组,并暂时不做任何进展。 我正在检查的字符串可以有多种形式,例如
<A title="Test title Ch.42" href="http://www.google.com">Test title Ch.42 </a>
<A title="Test title Vol2. Ch.42" href="http://www.google.com">Test title Vol2. Ch.42 </a>
<A title="Test title Vol2.Ch.42" href="http://www.google.com">Test title Vol2.Ch.42 </a>
<A title="Test title \"with multiple quotes\" Ch.42" href="http://www.google.com">Test title "with multiple quotes" Ch.42 </a>
<A title="Test title w1th numb3rs Ch.42" href="http://www.google.com">Test title w1th numb3rs Ch.42 </a>
<A title="Test title no 42" href="http://www.google.com">Test title no 42 </a>
所以一般来说规则是这样的:
标题标签中的主标题可以包含每个字符,包括数字和特殊字符
网址是标准网址,但可以使用(。*)表达式进行捕获而不会出现问题
The Ch。通常是可选的
如果该字符串包含Vol。,则Ch。获得强制性
我当前的正则表达式如下所示:
pattern = re.compile('<A title="((.*)(?:Vol.[\d]+){0,1}(?: Ch.){0,1}([\d]+))" href="(.*)">')
我想尝试捕获:
包含Vol和Ch的标题标签,包括背后的数字
没有Vol和Ch的标题(没有Vol和Ch背后的数字)
Ch。
分割正则表达式会更好吗,对性能有什么好处(它运行几千个字符串,所以我想保持它的性能)?
亲切的问候Baumchen
答案 0 :(得分:0)
在这种情况下,正则表达式不是解析的最佳工具,我想有一个完全适合的工具。但是,举个例子,你可以试试这个:
@{
Layout = null;
}
<div id="itemView">
@{
foreach (var uri in @Model)
{
<img class="item" src="@uri" />
}
}
</div>
<a title="(.+?)\s?((Vol(\d+))?\s?\.?(Ch.(\d+)))?"\shref="(.+)">
- title,group(1)
- 使用num或/使用带有num的group(2)
- Vol with number group(3)
- 仅限(Vol)group(4)
- Ch,数字group(5)
- 仅限编号(Ch。)group(6)
- 网址