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