所以我是正则表达式的新手,我只使用简单的文本编辑器学习它们。我有以下文件
84544484N
32343545M
32334546E
34456434M
我正在尝试将每对线组合成一个制表符分隔线 结果应该是:
84544484N 32343545M
32334546E 34456434M
我写了以下内容:
Search: (.*?)\n(.*?)
Replace: \1\t\2
这没用,有人可以解释原因并给我正确的解决方案。谢谢!!
答案 0 :(得分:2)
(.*?)\n(.*?)
模式永远不会正常工作,因为模式末尾的(.*?)
将始终返回一个空字符串(因为*?
是一个惰性匹配量词,如果它可以返回它将使用贪婪匹配并调整模式,如:
(.+)\r?\n *(.*)
或 - 因为SublimeText使用Boost正则表达式 - 您可以将任何换行符序列与\R
匹配:
(.+)\R *(.*)
并替换为\1\t\2
。注意我在第一个捕获组中将*?
替换为+
,因为您需要匹配非空行。
正则表达式细分:
(.+)
- 除换行符之外的一个或多个字符(尽可能多)\R
- 换行符序列\r\n
,\r
或\n
} *
- 文字空间,零次或多次出现(.*)
- 第2组:除换行符之外的零个或多个字符(尽可能多)