regex - 用正则表达式分隔单词(不按特定顺序)
问题描述
从文本中提取例如;以下句子包含首字母大写。我怎样才能将它们分开?
文本:
A. lorem ipsum dolor 坐 B . 41dipiscing 精英 sedC. lorem ipsum dolor sit amet D. 35 Consectetur adipiscing E .Sed do eiusmod tempor
目标:
A. lorem ipsum dolor sit
B . 41dipiscing elit sed
C. lorem ipsum dolor sit amet
D. 35 Consectetur adipiscing
E .Sed do eiusmod tempor
我做了什么?
^(([a-zA-Z]{1}|[0-9]+)\s*[.,]{1})(.*)$
结果:
https://regex101.com/r/4HB0oD/1
但是我的正则表达式代码没有第一句话就检测不到它。这是什么原因?
解决方案
也许,
(?=[A-Z]\s*\.)
可能工作正常。
正则表达式演示
测试
import re
string = '''
A. lorem ipsum dolor sit B . 41dipiscing elit sedC. lorem ipsum dolor sit amet D. 35 Consectetur adipiscing E .Sed do eiusmod tempor
'''
print(re.sub(r'(?=[A-Z]\s*\.)', '\n', string))
输出
A. lorem ipsum dolor sit
B . 41dipiscing elit sed
C. lorem ipsum dolor sit amet
D. 35 Consectetur adipiscing
E .Sed do eiusmod tempor
如果您希望简化/更新/探索表达式,它已在regex101.com的右上角面板中进行了说明。如果您有兴趣,可以在此调试器链接中观看匹配步骤或修改它们。调试器演示了 RegEx 引擎如何逐步使用一些示例输入字符串并执行匹配过程。
正则表达式电路
jex.im可视化正则表达式:
推荐阅读
- google-apps-script - 如何使用应用脚本更改 HTML 表单写入的工作表?
- mysql - 为什么我无法将值插入我的 SQL 数据库?
- python - 如何将其转换为数据框并将其保存为 csv?
- docker - 如何配置 docker daemon.json 以始终挂载特定路径?
- snowflake-sql - 如何找到每月的第二个星期一
- python - Start_urls 没有被解析
- sql-server - 使用 JDBC 连接到可用性组侦听器出现错误
- python - 给定来自均匀分布 [0,d] 的 n 个样本,你将如何估计 d?
- ruby-on-rails - 需要帮助使用 rubyzip 和 rails 创建 zip 文件存档
- python - 如何通过“link_text”找到这个元素?