首页 > 解决方案 > 正则表达式按特定值拆分字符串

问题描述

尝试使用正则表达式按特定字符和值拆分字符串。

例如,我有以下字符串:

abc.def.ghi:wxyz_1234

我想同时获得“ wxyz ”和“ 1234 ”。

即':'和'_'之间的字符串和'_'之后的字符串

干杯!

标签: regexsplitexpression

解决方案


方法一

也许,

([^\s:_]+)_(\S+)

可能工作正常。

正则表达式演示 1


方法二

使用lookbehind,为前下划线字符串创建左边界:

(?<=:)([^_]+)_(.+)

正则表达式演示 2

测试

import re

string = '''
abc.def.ghi:wxyz_1234
abc.def.ghi:abcd_78910
abc.def.ghi: foo_baz123
'''

expression = r'([^\s:_]+)_(\S+)'

for i in re.findall(expression, string):
    print(i[0])
    print(i[1])

输出

wxyz
1234
abcd
78910
foo
baz123

如果您想简化/修改/探索表达式,它已在regex101.com的右上角面板中进行了说明。如果您愿意,您还可以在此链接中观看它如何与一些示例输入匹配。


正则表达式电路

jex.im可视化正则表达式:

在此处输入图像描述


推荐阅读