Python 在字符串模式中匹配特定字符的正则表达式

Python 在字符串模式中匹配特定字符的正则表达式,python,regex,Python,Regex,我有很多这样的字符串模式的例子,但我想展示一些例子 from: [name: Illianney Amada id: 674176087] from: [name: Natalia Morel-Gibbs id: 100003799207624] from: [name: Jules Kaneyge Pand id: 100000110811550] 并且,我想说明如下参数类型:(WatchString和SequenceOfNumber) 但实际上,它

我有很多这样的字符串模式的例子,但我想展示一些例子

from:   [name:  Illianney Amada
id:     674176087]
from:   [name:  Natalia Morel-Gibbs
id:     100003799207624]
from:   [name:  Jules Kaneyge Pand
id:     100000110811550]
并且,我想说明如下参数类型:(WatchStringSequenceOfNumber

但实际上,它是从这个角度来表现的

from:\t[name:\tString\nid:\tSequenceofNumber]
因此,我想用,\t“或制表符替换“String”“id:”之间的“\n”。结果应该是这样的

from:\t[name:\tString,\tid:\tSequenceofNumber]\n
from:\t[name:\tString,\tid:\tSequenceofNumber]\n
from:\t[name:\tString,\tid:\tSequenceofNumber]\n
from:   [name:  String,    id:     SequenceOfNumber]
from:   [name:  String,    id:     SequenceOfNumber]
from:   [name:  String,    id:     SequenceOfNumber]
或者像这样

from:\t[name:\tString,\tid:\tSequenceofNumber]\n
from:\t[name:\tString,\tid:\tSequenceofNumber]\n
from:\t[name:\tString,\tid:\tSequenceofNumber]\n
from:   [name:  String,    id:     SequenceOfNumber]
from:   [name:  String,    id:     SequenceOfNumber]
from:   [name:  String,    id:     SequenceOfNumber]

注意:我实现了用Python模块替换正则表达式re

更新:

import re
fixed = re.sub(r"(\[name:.*?)\n", r"\1,\t", originalString, re.M)
结果:

from:   [name:  Illianney Amada,       id:     674176087]
from:   [name:  Natalia Morel-Gibbs,   id:     100003799207624]
from:   [name:  Jules Kaneyge Pand,    id:     100000110811550]
工作示例:


旧版:

import re
fixed = re.sub(r"(\[name:.*?)\n", r"\1,\t", originalString, re.M)
如果您只有一个
\n
,您可以执行以下操作:

originalString = "from:\t[name:\tString\nid:\tSequenceofNumber]"
fixedString = ",\t".join(originalString.split("\n"))
这将拆分
\n
上的字符串,并将其与
,\t
重新连接在一起,从而导致:

from:\t[name:\tString,\tid:\tSequenceofNumber]

警告:在最初的示例中,您实际上没有在变量中设置字符串。您是否正在从文本文件打开此文件?如果是这样的话,答案会发生巨大的变化,因为您可能一次只循环一行。

如果仅替换模式中的“\n”,则如下所示:

import re

data = """from:   [name:  Jules Kaneyge Pand
id:     100000110811550]
from:   [name:  abcd
id:     100000110811550]
           """

print ',\tid:'.join(re.split("[^\]]\s*\n\s*id:", data))
您将获得:

from:   [name:  Jules Kaneyge Pan,  id:     100000110811550]
from:   [name:  abc,    id:     100000110811550]

@埃弗顿:对不起,我刚刚编辑了我的问题。是Python,谢谢。我忘了在我的问题中解释。关于模式,我有很多。因此,将有许多“\n”:\好吧,不管怎样,如果你想全部替换它们,这实际上是可行的。如果你只想要一把,那么你需要更复杂的东西。你的解决方案很好,但我想再次说声对不起。因为我并没有提到单个字符串变量中字符串模式的倍数。所以,您的解决方案也会影响“\n”between模式。是的,绝对会影响所有模式。我看到你更新的帖子,会整理出一个正则表达式。更新,见新正则表达式示例。