用逗号替换空格,其中可以包含正斜杠和破折号

时间:2018-10-01 12:30:56

标签: regex macos textmate regex-group vcard

我正在尝试用文本替换行中的空格,并用逗号替换正斜杠,而在行尾没有逗号。

我正在使用带有单独的查找和替换字符串的文本编辑器。

输入看起来像这样(几个不同的变量):

CATEGORIES:ORION/AKC Collection accounts receivable White Plains 
CATEGORIES:ABITIBIBOWATER/NOA1 ENRON/NOA PAPERCO/CL DWA 
CATEGORIES:ONSITE FAO 
CATEGORIES:LAR-DAN Lar-Dan 

结果应为:

CATEGORIES:ORION/AKC,Collection,accounts,receivable,White,Plains 
CATEGORIES:ABITIBIBOWATER/NOA1,ENRON/NOA,PAPERCO/CL,DWA 
CATEGORIES:ONSITE,FAO 
CATEGORIES:LAR-DAN,Lar-Dan 

我尝试过:

CATEGORIES:([A-Z|a-z])*

但这只会让我得到第一个表情

CATEGORIES:ORION (in the first example.

2 个答案:

答案 0 :(得分:0)

在您的示例中,看起来好像您不是要替换 1.与文本成一行的空白 2.用逗号正斜杠

您期望输出将逗号替换为空白

您可以通过搜索以下模式来实现

(?<=\w)\s(?=\w)

,然后只需用逗号替换即可。

这只会搜索字符周围的空白,并忽略结尾处有换行符的空格。

您可以在任何编辑器中进行此操作(在notepad ++和vim上进行过尝试)

此外,如果您想实现 1.与文本成一行的空白 2.用逗号正斜杠

然后针对#1,在文件中搜索(?<=\w)\s(?=\w),并将其替换为所需的文本。

对于#2,请在文件中搜索\/,然后将其替换为,

答案 1 :(得分:0)

您尝试过的CATEGORIES:([A-Z|a-z])*的正则表达式匹配CATEGORIES:,然后是一个捕获组,重复捕获了零次或多次,其范围为a-zA-Z,还有一个|因为它们在character class中。例如,这也将匹配CATEGORIES:ONSITE||

您可能要做的是在捕获组中匹配类别,并使用\G进行迭代匹配,在该捕获中您不捕获第二个捕获组中的空白字符,然后将一个或多个空格匹配到末尾字符串$的后面没有。

(CATEGORIES:|\G(?!^))(\S+)[ ]+(?!$)

Regex demo

并替换为2个捕获组,后跟一个逗号

$1$2,