我在查找Python中的后视方面遇到了一些麻烦。更具体地说,我有这段文字的日期为(mm/dd/yyyy)
(mm-dd-yyyy)
格式,而且只有(yyyy)
格式的年份:
Jan-01-2001
Jan 01 2001
2003 2007
The year was 2009 when x decided to work for Google
匹配的最佳方法是提取具有yyyy
的行。我应该能够提取2003
,2007
和2009
,但不能提取Jan-01-2001
和Jan 01 2001
之类的任何其他日期。我尝试了 lookbehind 运算符,我可以带来的最好的是((?<!(-| ))\d{4})
。但是,这仅选择2003
和不 2007
和2009
。我还尝试使用 groups 来定义日期模式,并将它们与 lookbehind 结合使用,但这不起作用。在正则表达式(Python)中执行此操作的正确有效方法是什么
答案 0 :(得分:1)
这仅适用于您提供的示例字符串(并且年份前面没有2位数后跟空格或连字符)。假设所有日期都使用2位数来定义一个月中的某一天,这对您有用(因为python中的lookbehinds(以及大多数正则表达式引擎)无法量化)。
\b(?<!\b\d{2}[ -])\d{4}\b
Jan-01-2001
Jan 01 2001
2003 2007
The year was 2009 when x decided to work for Google
2003
2007
2009
\b
断言位置为单词边界(?<!\b\d{2}[ -])
负面观察,确保先前的内容不符合以下条件
\b
断言位置为单词边界\d{2}
正好匹配2位数字[ -]
匹配空格
或连字符-
字符\d{4}
正好匹配4位数字\b
断言位置为单词边界答案 1 :(得分:0)
string[] split = data.Split(new string[] {","}, stringsplitoptions.None);
if(split[1] == "[UI]")
{
UI_Data(Res_Data); // method for using the data within the UI
}
//method for the update methods
if(split[1] == "[UP]")
{
UP_Data(Res_Data);
}