gpt4 book ai didi

java - 当行包含双引号时如何捕获行尾?

转载 作者:行者123 更新时间:2023-11-30 06:58:17 28 4
gpt4 key购买 nike

我有一个文档,其中许多行包含双引号,如下所示:

"foo
bar
"bam"
foo "bar

我想捕获包含双引号的每一行的末尾。但我不希望它捕获末尾已包含双引号的行。刚刚结束"foofoo "bar应该匹配。

我目前一直在尝试使用多个正向回顾,如下所示: (?<=")(?=.*)[^"]$

最佳答案

此正则表达式将仅查找(并替换)其中包含奇数个 " 的行:

search_pattern = "(?m)^[^\"\n\r]*\"[^\"\n\r]*(?:\"[^\"\n\r]*\"[^\"\n\r]*)*$";
replace_pattern = "$0\"";
the_string.replaceAll(search_pattern, replace_pattern);

重要的部分是:

  • (?m)^/$ 计为的开头/结尾,而不是整个行字符串。
  • [^\"\n\r]* 系列非 " 和非换行符。
  • (?:\"[^\"\n\r]*\"[^\"\n\r]*) 正好两个 "的序列字符,以及任意数量的非 " 和非换行符。 (* 后记允许任意数量的 " 对。)

如果您使用的是 Linux 或安装了 sed,您还可以从终端或 shell 调用此命令:

sed -r 's/^[^"\n\r]*"[^"\n\r]*("[^"\n\r]*"[^"\n\r]*)*$/\0"/' the_file.txt

关于java - 当行包含双引号时如何捕获行尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41403190/

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