0

我有一个具有这种格式的字符串:

some text <br>septembar 1989<br>

我正在使用这个正则表达式找到月份和年份部分

<br/?>(?!=b\.)(.*?\b\d{4}\b)

我得到了我想要的——septembar 1989

但是,我现在有<br>插入时的情况

<br>some text <br>septembar 1989<br>

结果:some text <br>septembar 1989

您能否建议如何修改我现有的模式以支持这两种情况?我想我需要以某种方式排除<br>匹配.*?

4

3 回答 3

0

我写了一个简单的代码,可能对您有所帮助:

import re
def getDate(str):
 m = re.match("[\<br>]*[\w\s]*\<br>([\w\s]*[12][0-9]{3})",str);
 return m.group(1)

print getDate("some text <br>dec 1989<br>");
print getDate("<br> some text <br>septembar 1989<br>");
print getDate("grijesh chuahan <br>feb 2009<br>");

输出:

dec 1989
septembar 1989
feb 2009
于 2013-03-04T13:52:52.107 回答
0

尝试这个

<br/?>([^<]+)\d{4}

[^<]表示匹配除您想要的开始标签之外的任何内容。

于 2013-03-04T13:15:46.793 回答
0
import re

ss = 'dfgqeg<br>some text <br>septembar 1989<br>'

reg = re.compile('<br(?: /)?>'
                 '(?!.+?<br(?: /)?>.+?<br(?: /)?>)'
                 '(.+?\d{4})'
                 '<br(?: /)?>')

print reg.search(ss).group(1)

.

  • '<br(?: /)?>'捕获<br><br />发生

.

  • '(?!.+?<br(?: /)?>.+?<br(?: /)?>)'是一个前瞻断言,
    它验证在它在分析文本中开始的位置之后,没有描述为连续的字符集:

    • .+? 任何类型的字符,但?该部分必须在遇到<br><br />遇到时 立即停止的命令
    • <br>或者<br />
    • 再次出现任何类型的字符之前<br><br />
    • <br>或者<br />
于 2013-03-04T13:24:29.407 回答