正则表达式 - 冒号之间的文本

时间:2009-10-13 09:54:52

标签: regex

我有这样的架构

<h1>
5/2009
<br/>
Question: This is the question
</h1>

我喜欢在<br/>之后获取第一部分,或者始终在冒号:

之前获取字符串

- &GT;解决方案应该是“问题”

注意:这个词改变了 - 有时它的问题,其他可能是个大问题......

我尝试使用<h1>(.{0,50}):(.{0,50}),但这会返回很多(也是日期)

我没有接受正则表达式的训练,任何人都可以帮助我吗?

非常感谢。

4 个答案:

答案 0 :(得分:2)

试试这个:

<br/>([^:]+):

答案 1 :(得分:1)

我相信这会奏效:

<h1>.*?<br />([^:]+):(.*?)</h1>

答案 2 :(得分:1)

考虑一下你的意思并将其翻译成正则表达式语言。正如Gumbo指出的那样,您应该使用[^:]而不是.;这样做的原因是你正在寻找不是冒号([^:])的字符组,而不是完全符合任何字符的组[1](.)碰巧有冒号他们之间。

每当你发现自己在正则表达式中使用.量词时,请停下来问自己,你是否真的是指“任何角色”,或者你是否能更清楚地表达你的意思(并获得更准确的结果)而是一个角色类。

(非贪婪量词(.*?)也可以在这种情况下完成正确匹配的工作,但是角色类仍然是人类读者意图的更清晰表达,并通过避免过度回溯来提高效率机读者。)

[1]嗯,绝对是任何字符,可能除了换行符之外,取决于您正在使用的正则表达式实现。

答案 3 :(得分:0)

我的脑子里充满了光彩。非常感谢所有已经帮助过的人。

可能任何人都可以尝试再次帮助对我来说如此重要:S?

<ul>
<li>
07.05.2009:
<a href="#1">Test 1</a>
</li>
<li>
05.01.2009:
<a href="#2">Test 2</a>
</li>
</ul>

这次我想阅读第二部分。最好的事情是,如果我在一个正则表达式中单独分开..

所以:1。07.05.2009     2.测试1