仅适用于(YYYY)的Python Regex extractall,而不适用于MMM YYYY

时间:2018-10-10 22:46:10

标签: python regex

我的数据框df包含由文本组成的列(文本行)

df['textline'].iloc[0] = 'This is a test with 2018\n'
df['textline'].iloc[1] = 'This is a test with Jan 2018\n'
df['textline'].iloc[2] = 'This is a test with Feb 2018\n'

我想使用正则表达式extractall来遍历整个df ['textline'],但它只会在没有前面的月份名称时提取年份。例如,在上面的示例中,它将从第一行提取2018,但不会从第二或第三行提取2018,因为它具有1月或2月(或其他月份)。

df['textline'].str.extractall(r'<<Regex code>>')

2 个答案:

答案 0 :(得分:0)

我想出了答案的第一部分:

df['textline'].str.extractall(r'(?<!Jan|Feb) ([1-2][0-9]{3})')

第二部分是如何对一月,二月的整个单词使用同一行,以便使其在2018年2月和2018年2月都可以使用

答案 1 :(得分:-1)

您可以尝试以下方法吗:

(?<=(\s))\d{4}(?=\D)

比赛:

这是 2018 \ n

的测试

这是对Jan 2018 \ n

的测试

这是2月 2018 \ n

的测试