gpt4 book ai didi

regex - 在 Notepad++ 中寻求正则表达式以仅在两个引号 ["] 之间搜索和替换 CRLF

转载 作者:行者123 更新时间:2023-12-02 07:37:44 25 4
gpt4 key购买 nike

我有一个包含大约 600 条记录的 CSV 文件,我需要用 [空格] 替换一些 [CRLF],但只有当 [CRLF] 位于两个 ["](引号)之间时。当第二个遇到 ["] 那么它应该跳过该行的其余部分并转到文本中的下一行。

我真的没有起点。希望有人提出建议。

例子:

John und Carol,,Smith,,,J.S.,,,,,,,,,,,,,+11 22 333 4444,,,,,"streetx 21[CRLF]
New York City[CRLF]
USA",streetx 21,,,,New York City,,,USA,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Normal,,My Contacts,[CRLF]

此时第一个["]后的两个[CRLF]需要用空格[]代替。当遇到第二个["]时,跳过行尾转到下一行。

然后,现在在下一行,遇到第一个 ["] 后替换所有 [CRLF],直到遇到第二个 ["]。 [CRLF] 的数量各不相同。在 CSV 文件中,2 个引号 ["] 之前 (23) 和之后 (65) 的逗号 [,] 数量不变。

所以也许可以使用逗号计数器。我不知道。

感谢您的反馈。

最佳答案

这将仅使用一个正则表达式(在 Notepad++ 中测试):

Find what 字段中输入此正则表达式:

((?:^|\r\n)[^"]*+"[^\r\n"]*+)\r\n([^"]*+")

Replace with 字段中输入此字符串:

$1 $2

确保选中 Wrap around 复选框(和 Regular expression 单选按钮)。

根据需要多次执行全部替换(直到弹出“0 次出现被替换”对话框)。

解释:

(
(?:^|\r\n) Begin at start of file or before the CRLF before the start of a record
[^"]*+ Consume all chars up to the opening "
" Consume the opening "
[^\r\n"]*+ Consume all chars up to either the first CRLF or the closing "
) Save as capturing group 1 (= everything in record before the target CRLF)
\r\n Consume the target CRLF without capturing it
(
[^"]*+ Consume all chars up to the closing "
" Consume the closing "
) Save as capturing group 2 (= the rest of the string after the target CRLF)

注意:*+ 是所有格量词。适本地使用它们可以加快执行速度。

更新:

这个更通用的正则表达式版本适用于任何换行符序列(\r\n\r\n) :

((?:^|[\r\n]+)[^"]*+"[^\r\n"]*+)[\r\n]+([^"] **+")

关于regex - 在 Notepad++ 中寻求正则表达式以仅在两个引号 ["] 之间搜索和替换 CRLF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14493861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com