regex - 正则表达式按特定值拆分字符串
问题描述
尝试使用正则表达式按特定字符和值拆分字符串。
例如,我有以下字符串:
abc.def.ghi:wxyz_1234
我想同时获得“ wxyz ”和“ 1234 ”。
即':'和'_'之间的字符串和'_'之后的字符串
干杯!
解决方案
方法一
也许,
([^\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可视化正则表达式:
推荐阅读
- pentaho - Pentaho 数据集成
- flutter - 将 Firebase 云消息传递功能与 main.dart 分开的 Flutter 问题
- ansible - 在 Ansible playbook 中使用 inventory_file 和一个空的清单文件
- php - Rabbitmq 中有队列池吗?
- mysql - 谷歌云中的Mysql实例 - 通信链接失败
- python - 使用 SQL Server 提高 pandas 的 to_sql() 性能
- python - 没有边的 Networkx 节点具有度数
- python - Numba 可以用来继承 Keras 层吗?
- javascript - JavaScript 按钮点击事件
- javascript - 是否可以在javascript中将数组转换为NodeList?leetcode问题--链表--