【发布时间】:2018-04-07 18:48:57
【问题描述】:
我正在尝试创建一个正则表达式来匹配一年中月份的数字 1-12(其中第一个数字是可选的)和一个月中的几天的 1-31,而不附加从 1 到 12 的所有数字。(想象一下内存,如果这是 1 - 100 万)
pd.Series(["some text8some text","some text13some text", "05"]).str.extract('(?P<mm>[1][012]|(?:[0])?[1-9])')
在 8 上正常工作,但在 13 上工作而不是忽略它与 1 匹配。 所以我尝试了
pd.Series(["some text8some text","13some text", "05"]).str.extract('(?P<mm>[1][012]|(?:[0])?[1-9][^0-9])')
但它迫使我在 8 之后有一个字符,否则不匹配。
有人可以帮忙解决这个正则表达式否定,它迫使我在 8 之后有一个字符来匹配吗?
所需的输出是
0: 8
1: Nan
2: 5
由于没有空格,单词边界将不起作用,从而迫使我们使用正则表达式否定。
【问题讨论】:
-
你能说得更具体点吗?给我们一个输入示例和期望的输出?
-
是的,8 的期望输出是 8,13 的输出是 Nan。谢谢,我会编辑问题
-
它与那些问题不同:|最初的意图是为了直观地使用正则表达式否定,因为它不需要将文本与数字分开的单词边界或空白字符。但是,我希望替代解决方案在数据集上可以正常工作。谢谢@Jan
-
没有空格作为单词边界
-
@dev:看看这里的环视:regex101.com/r/kFnIsJ/1
标签: python regex pandas regex-negation