[英]REGEX pattern to exlude specific string
我有一个具有以下格式的字符串:
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>
与.*?
匹配.*?
尝试这个
<br/?>([^<]+)\d{4}
[^<]
表示匹配任何内容,除了所需的开始标签。
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 />
我写了一个简单的代码,可能对您有所帮助:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.