首页 > 解决方案 > 正则表达式在最后一次出现字符后查找文本直到另一个字符

问题描述

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

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

标签: pythonregexpandasdataframe

解决方案


你可能会使用

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

正则表达式演示

或者什么时候\\n是真正的换行符

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

正则表达式演示

例如

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

推荐阅读