【问题标题】:Regex to find text after last occurence of character till another one正则表达式在最后一次出现字符后查找文本直到另一个字符
【发布时间】:2021-03-22 00:41:50
【问题描述】:

我正在寻找一个正则表达式来提取以“包括:”开头并以字符“\n*”或“\n•”最后一次出现之后的文本结尾的信息,直到字符“\n” .换句话说,我试图在最后一次出现“\n*”或“\n•”之后找到一个结尾作为“\n”的第一次出现。我已经尝试过这个demo,但没有按我的意愿工作。我想包括下一句,直到“指导。\n”。 我正在使用 python,我试图将其提取到我的 pandas DataFrame 中名为“Skills”的新列中。 “职位描述”列有信息

df["Skills"]=df["Job description"].str.extract("including:((?:.)*\\n[*|•])")

【问题讨论】:

标签: python regex pandas dataframe


【解决方案1】:

你可能会使用

(?s)\bincluding:(.*\\n[*•]).*?\\n(?![*•])
  • (?s) 内联修饰符使点匹配换行符
  • \bincluding: 匹配 including: 前面有一个单词边界
  • ( 捕获第 1 组
    • .*\\n[*•] 匹配直到最后一次出现 \n 后跟 * 或 •
  • (关闭第一组
  • .*?\\n 匹配直到第一次出现 \n

Regex demo

或者当\\n 是一个真正的换行符时

(?s)\bincluding:(.*\n[*•]).*?\n(?![*•])

Regex demo

例如

df["Skills"] = df["Job description"].str.extract(r"(?s)\bincluding:(.*\n[*•]).*?\n(?![*•])")

【讨论】:

  • @Prestyy 我在“技能”列中添加了用于获取捕获组 1 值的代码
  • 是的,伙计!我只是对返回的组稍作更改以获取文本,直到 '\n'(包括那个)像这样 r"(?s)\binclude:(.*\n[•].?\n)(?![*•])" ,正如我之前提到的。如果需要,您可以对其进行编辑。谢谢你给我答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 2021-01-02
  • 2017-08-15
相关资源
最近更新 更多