正则表达式捕获除连贯文本之外的所有内容

时间:2013-10-30 14:21:22

标签: regex rubular

我有这个字符串和其他类似的字符串:

<a href='/webapps/alrn-atomiclearning-bb_bb60/atomic/view.jsp?courseId=@X@course.pk_string@X@&contentId=@X@content.pk_string@X@&tt=Using+the+course+calendar&st=Blackboard+Learn%E2%84%A2+9.1+Instructor+-+Additional+Features+Training&d=00:02:09&tid=84425&sid=2389'><img src='/webapps/alrn-atomiclearning-bb_bb60/images/icon_play_UnlockedTutorial.png' alt='play icon'>&nbsp;Using the course calendar</a><br/>Duration: (00:02:09)

我正在尝试使用正则表达式捕获所有内容,除了在&nbsp;之后开始并在</a><br/>

之前结束的连贯标签之外

例如,我会捕获所有内容,然后将其删除,最后只有:

Using the course calendar
仍然存在。我在Rubular中尝试了多种变体,但只能达到。尝试使用[^a-zA-Z|^\s]*<\/a>.*跳过每个单词char和white space到&lt; \ a&gt;不起作用。

感谢。

1 个答案:

答案 0 :(得分:1)

使用前瞻和后瞻 - 括号中的两个部分。修改中间的字符类以捕获要选择的所有内容。

(?<=>&nbsp;)[a-zA-Z\s]+(?=<\/)

修改

([\s\w\d\S\W\D]+)((?<=>&nbsp;)[a-zA-Z\s]+(?=<\/))\K([\s\w\d\S\W\D]+)

最终会创建三个匹配组,在您想要留下的位之前,您想要留下的位,以及您想要留下的位。我不确定如何,或者确实可以指定选择多个匹配,就像它是一个匹配一样 如果可能的话,我仍然会选择你真正想要的东西。