我有这样的文件:
id : 1234567890
1)client_name : Abcd
2)family_name : Efgh
5)phon_number : 9876543210
6)address : street number
data : [42|63] [42|62]
id : 14785236984
1)client_name : Abcd
2)family_name : Efgh
5)phon_number : 987555555555
6)address : street number
data : [44|67] [21|1024]
id : 987456321
1)client_name : Abcd
2)family_name : Efgh
5)phon_number : 98744444444
6)address : street number
data : [26|1089] [21|1524]
我想用regex来划分这些信息,因为并不是所有的块都是分开的 使用新行('\n'),因此我很难使用我尝试使用正则表达式执行的拆分:
^[\s]id[\w\W\s\S\t]+(\[\d{1,}\|\d{1,}\]{,2})$
但是我需要所有的模块结果应该是:
第一组
id : 1234567890
1)client_name : Abcd
2)family_name : Efgh
5)phon_number : 9876543210
6)address : street number
data : [42|63] [42|62]
第二组
id : 14785236984
1)client_name : Abcd
2)family_name : Efgh
5)phon_number : 987555555555
6)address : street number
data : [44|67] [21|1024]
第三组
id : 987456321
1)client_name : Abcd
2)family_name : Efgh
5)phon_number : 98744444444
6)address : street number
data : [26|1089] [21|1524]
这个正则表达式将把输入文本分成以
id
开头的组(如果希望保留空格,可以省略.strip()
)。Explanation of this regexp here。你知道吗输出将是3个字符串的列表(我在它们之间加了新行以清楚地看到):
用空格来
split
可能会更容易,用id
的lookahead后跟空格:https://ideone.com/FSgVrN
这种方式似乎相当简单易读:
按id前面的换行符拆分。也可以提取原始字符串并将其剥离。你知道吗
演示:https://ideone.com/No5vva
相关问题 更多 >
编程相关推荐