正则表达式对新行的关联

时间:2013-09-30 16:58:16

标签: php regex windows notepad++

我必须为批量文件重命名器设置配对列表。我可以用php获取dir1和dir2的文件内容,但在我将它发送到批量重命名之前,我需要将它们配对。我的问题是即使在php中,这两个文件的输出也是这种形式

output 1

abc.jpg
def.jpg
fgh.jpg

output 2

_01.wmv
_02.wmv
_03.wmv

尝试为它执行正则表达式,删除新行并将它们全部放在一个字符串中,然后使用

([a-zA-Z]+)(.jpg)(.+)(_[0-9]+\.wmv)

并替换为

\r\n\1\2\r\n\4\r\n\3

然而,首先输出>最后输出并且必须重复该过程。我知道我错过了什么。

也许是一个起始的^字符串或另一个我不知道的运算符。请帮忙。谢谢

EDIT //

所需的输出是

abc.jpg _01.wmv
def.jpg _02.wmv
fgh.jpg _03.wmv

通过将它们放在一个字符串中,我的意思是删除所有新行,因此输出将是这样的

abc.jpgdef.jpgfgh.jpg_01.wmv_02.wmv_03.wmv

感谢您的反馈!

2 个答案:

答案 0 :(得分:1)

我不太清楚你的意思,但这是我从你的问题中理解的:你有两个文件。两者都包含一些jpg和wmv文件名。您想从这两个文件中提取所有这些文件名。如果是这样,这就是您所需要的:

/(?:^|\G).*?([\w_]+\.(?:jpg|wmv))/sg

action中查看。

这个正则表达式使用\ G和/ g修饰符来使这个正则表达式重复。如何通过here很好地解释这是如何工作的。

答案 1 :(得分:1)

我认为你想要像Unix paste command这样的东西。

在Notepad ++中实现类似功能的一种方法是使用矩形区域复制和粘贴。在Notepad ++中,按住 Alt 键,将鼠标指针拖到矩形文本区域上,释放 Alt 键。复制所选区域。单击文件中的其他位置或其他文件并粘贴复制的文本。对于问题中的平局问题,我会对一个文件的整个内容进行矩形选择,然后将其粘贴到另一个文件中。

小心了解复制和粘贴时矩形选区如何处理不同长度的线条。我建议在尝试使用真实文件之前尝试一些文本。