【问题标题】:Regex keep unique lines正则表达式保持独特的线条
【发布时间】:2020-04-21 12:01:57
【问题描述】:

给定这个字符串:


abc quantity
abc quantity

abc quantity
abc quantity
abc quantity    id
abc quantity
abc quantity


我希望只保留独特的线条,如:

abc quantity
abc quantity    id

到目前为止,我有 (?s)^(.*)(\r?\n\1)+$ 并用 $1 替换,如 demo 这不是安静地产生预期的结果 任何帮助表示赞赏

【问题讨论】:

  • 你要替换吗?你不能只将独特的行与(?m)^(.*)$(?!(?:\R.*)*?\R\1$) (demo) 匹配吗?
  • 对,我看到了比赛。如何保留匹配的并删除其他的?
  • 只需提取它们并稍后加入。
  • 如果愿意,您可以使用正向预测并将匹配项替换为空字符串:(?m)^(.*\R)(?=(?:.*\R)*\1)Demo。但是,无论您是这样做还是加入匹配的行,如果字符串很大,使用正则表达式的效率都会非常低。正如@Aleks 建议的那样,更好的做法是将字符串拆分为行并将它们添加到集合中。

标签: regex unique pcre


【解决方案1】:

我的建议是在\n(新行) 处拆分字符串并将其推送到设置。

【讨论】:

  • 好建议,但由于 OP 要求提供正则表达式解决方案,我认为您的答案应该是评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多