我一直试图在 Python 中找出这个正则表达式,但它没有产生预期的结果。
我有一个我加载的文本文件,格式如下:
"18 75 19\n!dont split here\n! but split here\n* and split here"
我想得到以下输出:
['18 75 19\n!dont split here',
'! but split here',
'* and split here']
我正在尝试将我的字符串拆分为 1) 一个新行后跟一个数字,或 2) 一个新行后跟一个特殊字符,前提是它后跟一个空格(例如“!但在此处拆分”,但不是'!不要在这里分裂')。
这是我到目前为止所拥有的:
re.split(u'\n(?=[0-9]|([`\-=~!@#$%^&*()_+\[\]{};\'\\:"|<,./<>?])(?= ))', str)
这很接近,但还没有。这是它产生的输出:
['18 75 19\n!dont split here', '!', '! but split here', '*', '* and split here']
它错误地单独匹配特殊字符:'!' 和 '*' 有自己的元素。正则表达式中有两个前瞻运算符。
如果您能帮助确定我可以使用此正则表达式更改的内容以使其不匹配单个特殊字符,并且只匹配特殊字符后跟整行,我将不胜感激。
我也对替代品持开放态度。如果有更好的方法不涉及两个前瞻,我也有兴趣了解解决此问题的其他方法。
谢谢!