Kev*_*n91 1 python regex string
我知道如何删除或替换子字符串。但我只在子字符串不重复出现的情况下才想要它。我做了一个看起来非常难看的解决方法,我想知道是否有更好的解决方案。
假设以下字符串:
test = "Hello\n,I am here now.\n\nSo what's the problem?"
Run Code Online (Sandbox Code Playgroud)
第一个"\n"应该删除,但第二个"\n\n"不应该。
为此,我将 替换为"\n\n"永远不会出现在正常会话字符串中的内容,例如:
x = test.replace('\n\n','42#*#')
x = x.replace('\n','')
x = x.replace('42#*#','\n\n')
Run Code Online (Sandbox Code Playgroud)
哪个有效,但我想知道是否有更好的解决方案来解决这个问题?
编辑:我尝试了在某个字符上拆分字符串的解决方案,前提是它没有直接跟在另一个特定字符之后
但是,当使用以下正则表达式时:
re.split('(?<!,)\n', test)
Run Code Online (Sandbox Code Playgroud)
我会得到以下结果:
['Hello', ',I am here now.', '', "So what's the problem?"]
Run Code Online (Sandbox Code Playgroud)
所以两者\n和\n\n都被删除了,我怎样才能避免这种情况?
您可以结合前瞻和回顾断言:
re.sub(r'\n(?!\n)(?<!\n\n)', '', test)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |