regex - 正则表达式查找数字和单词之间缺少空格的位置
问题描述
我正在使用正则表达式来清理一些文本文件。在某些地方,缺少空格,如下面的第二行所示:
1.9 Beef Curry
1.10Banana Pie
1.11 Corn Gravy
我需要一个表达式来在 0 和 B 之间的位置找到零长度匹配,以便我可以用空格替换它(在 Notepad++ 中)。请注意,分子可以是一位或两位数,也可以是一位(即 1. Exotic Disches)或三个级别(即 2.5.1 Chicken)。
有人可以给出答案吗?
我原以为以下其中一项应该可以工作,但 Notepad++ 称它无效。如果有人能告诉我原因,我也将不胜感激...
(?<=\.\d\d|\.\d)(?! )(?!\.)
(?<=\.\d{1,3)(?! )(?!\.)
提前致谢!
解决方案
也许它就足够了,只需在单词字符之间寻找零长度空格\B
(非单词边界)并检查,如果前面是数字而不是数字。如果是这样,请用空格替换。
\B(?<=\d)(?!\d)
- 在任何
\B
非单词边界 (?<=\d)
在后面寻找一个数字(?!\d)
向前看没有数字
要进一步将数字部分限制为点,后跟 1-3 个数字,请尝试类似\.\d{1,3}\B\K(?!\d)
where\K
重置报告匹配的开头。或者没有\K
并替换为$0
顺便提一下:下划线也属于单词字符。如果您的输入包含下划线,例如1_
,您不想在此处添加空格,请将前瞻更改为(?![\d_])
推荐阅读
- gnuplot - 如何在 gnuplot 中更改图表中条形的颜色?
- html - 使用 pandoc 将 HTML 中的多行代码片段转换为 Markdown
- c# - 在不知道文件名的情况下从网站下载文件,然后提取并移动到设置位置
- reactjs - 使用 React-Create-App 前端部署 Laravel 后端
- c++ - 使用 std::enable_if 重载函数以避免模板替换错误
- swift - UIDropSession,更新“绿+”系统指标
- .net - Microsoft Excel 中的 Oracle.DataAccess.Client 和 .NET Framework 错误
- python - Python:如何在请求中使用 Chrome cookie
- python - 保存集群坐标集
- angular - 在订阅方法中解析数据之前,如何使函数(调用订阅方法)等待返回值?