仅匹配\ n如果被字母包围

时间:2018-03-07 08:30:42

标签: python regex

我试图用BS4提取一些数据,但我对返回的内容有些麻烦。我需要一些正则表达式来删除' \ n'来自字符串,但仅当它被字母包围时,或者它不在字符串的开头或结尾时。

示例:

\nLorem ipsum do\nlor sit amet \n

我希望以:

返回
\nLorem ipsum dolor sit amet \n

正则表达式对我来说就像黑魔法一样,所以我所做的每一次尝试都匹配太多或根本没有。

我尝试过的事情:

https://regex101.com/r/opRffh/3 - 匹配' o \ nl',两边都有一到多个字符。

我应该用什么正则表达式来实现这个目标?

1 个答案:

答案 0 :(得分:0)

您可以在匹配\n时使用外观:

(?<=[a-zA-Z])\n(?=[a-zA-Z])

RegEx Demo

<强>解释

  • (?<=[a-zA-Z]):断言断言我们在前一个位置有一封信
  • \n:匹配换行符
  • (?=[a-zA-Z]):预见断言我们在下一个位置有一封信

<强>代码:

>>> str = ("\n"
...     "Lorem ipsum do\n"
...     "lor sit amet \n")
>>> print re.sub(r"(?<=[a-zA-Z])\n(?=[a-zA-Z])", '', str)

Lorem ipsum dolor sit amet

>>>