正则表达式在捕获行的其余部分时替换特定字符
regex to replace specific characters while capturing the rest of the line
使用记事本++
我需要在仅以 genre:
开头的行中将 ", "
替换为 ,
,文档中没有其他内容,同时保留该行中的所有其他内容。我会将 search/replace 应用于整个文件夹,因此我需要尽可能精确。
例子
genre: "drama", "thriller", "mystery", "espionage"
genre: "drama", "sci-fi"
应该是这样的:
genre: "drama, thriller, mystery, espionage"
genre: "drama, sci-fi"
我费了好大的劲才弄清楚如何做到这一点,而不是在 ", "
的每个实例之前和之后捕获无限数量的未知组,同时还保留第一个单词和冒号: genre:
。我很确定我必须捕获第一个和最后一个 "
之间的整个组,然后用该组中的 ,
替换 ", "
,但我不知道如何这样做。
显然,我这里的内容无法解决问题。
find what: ^genre: "(.*)", "(.*)", "(.*)", "(.*)"
replace with: genre: ", , , "
您可以使用
Find: (?:\G(?!^)|^genre:\h*").*?\K",\h*"
Replace: ,<SPACE>
详情:
(?:\G(?!^)|^genre:\h*")
- 前一个匹配位置的结尾或 genre:
,零个或多个水平白色 spaces 和 "
在字符串的开头(这里,行)
.*?
- 除换行字符外的任何零个或多个字符,尽可能少
\K
- 省略匹配的文本
",\h*"
- 消耗 ",
,然后是零个或多个水平白色 space,然后是 "
(这将被替换为 ,
+ space)
参见 regex demo:
然后试试这个代码,Updated Answer
查找:(?:^genre|\G)(?!^).*?\K", "
全部替换:,
","
后有一个 space
使用记事本++
我需要在仅以 genre:
开头的行中将 ", "
替换为 ,
,文档中没有其他内容,同时保留该行中的所有其他内容。我会将 search/replace 应用于整个文件夹,因此我需要尽可能精确。
例子
genre: "drama", "thriller", "mystery", "espionage"
genre: "drama", "sci-fi"
应该是这样的:
genre: "drama, thriller, mystery, espionage"
genre: "drama, sci-fi"
我费了好大的劲才弄清楚如何做到这一点,而不是在 ", "
的每个实例之前和之后捕获无限数量的未知组,同时还保留第一个单词和冒号: genre:
。我很确定我必须捕获第一个和最后一个 "
之间的整个组,然后用该组中的 ,
替换 ", "
,但我不知道如何这样做。
显然,我这里的内容无法解决问题。
find what: ^genre: "(.*)", "(.*)", "(.*)", "(.*)"
replace with: genre: ", , , "
您可以使用
Find: (?:\G(?!^)|^genre:\h*").*?\K",\h*"
Replace: ,<SPACE>
详情:
(?:\G(?!^)|^genre:\h*")
- 前一个匹配位置的结尾或genre:
,零个或多个水平白色 spaces 和"
在字符串的开头(这里,行).*?
- 除换行字符外的任何零个或多个字符,尽可能少\K
- 省略匹配的文本",\h*"
- 消耗",
,然后是零个或多个水平白色 space,然后是"
(这将被替换为,
+ space)
参见 regex demo:
然后试试这个代码,Updated Answer
查找:(?:^genre|\G)(?!^).*?\K", "
全部替换:,
","