regex 匹配相同的文本...记事本[已关闭]

fcy6dtqo  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(107)

已关闭,此问题需要更focused,目前不接受回答。
**要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

10小时前关闭。
Improve this question
我知道这对记事本来说很难,但我还是想问你是否可以帮助我!
我的工作需要把很多地址相同的人放在一起保存数据,我仍然每天手工做,但大量的让我想找到另一种方法。
例如:

John Stave
Amazon Inc
Michigan, Mi.

Elon Mask
Amazon Inc
Michigan, Mi.

得到这个:

John Stave, Elon Mask, Amazon Inc, Michigan, Mi.

也就是说我会把地址相同的人配对。

hjzp0vay

hjzp0vay1#

我同意InSync:某种编程语言的脚本更适合于解决该任务。
如果你坚持手工操作,你可以使用regex ^(.+)(\n.+\n.+)([\s\S]*?)(.+)\2$和替换$1, $4$2$3。它会合并最近的两个具有相同公司和位置的块。你需要重复使用这个替换,直到合并任何东西。
稍后,要将三行的块转换为由,分隔的单行,您可以使用(.+)\n(.+)\n(.+)(\n|$)和替换字符串$1, $2, $3。仅使用此替换一次
说明:

  • ^(.+)(\n.+\n.+)([\s\S]*?)(.+)\2$合并,可以看到here的演示:
  • (.+)匹配第一个合并块的名称行,将在替换字符串中被引用为$1
  • (\n.+\n.+)匹配合并区块的公司和位置区块,将在替换字符串中被引用为$2,在稍后的backreference匹配中被引用为\2
  • ([\s\S]*?)匹配任何内容,对于合并块不是结果的情况,将在替换字符串中被引用为$3
  • (.+)匹配第二个合并块的名称,将在替换字符串中引用为$4
  • \2$匹配第二个合并块的公司和位置,如果它与第一个完全相同。
  • (.+)\n(.+)\n(.+)(\n|$)匹配三个非空字符串的块,后跟换行符或文件结束。可以看到here的演示。

此外,建议在What does this regex mean上查看这个不错的参考。

相关问题