我正在尝试用文本替换行中的空格,并用逗号替换正斜杠,而在行尾没有逗号。
我正在使用带有单独的查找和替换字符串的文本编辑器。
输入看起来像这样(几个不同的变量):
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.
答案 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-z
和A-Z
,还有一个|
因为它们在character class中。例如,这也将匹配CATEGORIES:ONSITE||
您可能要做的是在捕获组中匹配类别,并使用\G
进行迭代匹配,在该捕获中您不捕获第二个捕获组中的空白字符,然后将一个或多个空格匹配到末尾字符串$
的后面没有。
(CATEGORIES:|\G(?!^))(\S+)[ ]+(?!$)
并替换为2个捕获组,后跟一个逗号
$1$2,