REGEX - 如何 select/mark 3 个作品在连续的行上用制表符分隔?

REGEX - How can I select/mark 3 works delimited by tabs on a consecutive lines?

新年快乐!

我有问题。我不知道如何 marks\select 一些用制表符分隔的连续行的单词:最近、评论和标签

请查看此打印屏幕:

我可以很容易地放置 | 符号,例如:Recent|Comments|Tags 但这将 select 文件中的所有单词重复,我只想要那些行上的那 3 个.

我想要的是制作一个正则表达式,删除这 3 个词之前的所有文本,以及另一个正则表达式以删除这 3 个词之后的所有内容。

我尝试过这样的方法 ((?s)((^.*)^.*Recente.*$|^.*Coments.*$|^.*Tags.*^))(.*$)但不是很好。而且我必须注意,因为这些词可以在文本文件中重复,所以我必须 select\mark 正是那 3 个连续的行(上面没有任何其他词)

你能在 perl 中试试这个吗:

perl -0777 -ne 'while(m/((\s|\t)+)Recent\nComments\nTags/g){print "$&\n";}' /path/to/file

细分:

  • 以 1 个或多个制表符开头(第一个捕获组)
  • 然后 "Recent" 后跟新行
  • 捕获组、评论和换行
  • 捕获组,标签

顺便问一下,"tab"真的是制表符还是多个连续的空格(\s+)?

因为你在评论中提到你想在 Notepad++ (问题文本中应该提到的事实),并且由于屏幕截图在前两个单词后显示了一个 space,您可以试试这个正则表达式:

.*\n([ \t]+Recente\s+Coments\s+Tags).*

它会 select 一切,但捕获 3 个单词,包括它们之间的 whitespace 和同一行第一个单词之前的 whitespace。

如果您随后替换为 ,则不在捕获组中的所有内容都将被删除。

实际上,前两个单词后的 space 对这个正则表达式无关紧要。