正则表达式在包含匹配的行之前插入文本?

时间:2013-10-05 11:57:28

标签: regex

我有一群以这种方式命名的艺术家:

Killers, The
Treatment, The
Virginmarys, The

我需要它们看起来像

The Killers
The Treatment
The Virginmarys

我能够将这些行与, The匹配((^|\n)(.*, The)就是我所使用的),但更高级的语法是我的意思。我也可以在替换语法上使用regex(它适用于TextPipe过滤器,因此也可以用于Notepad++或任何其他Regex文本编辑器。

3 个答案:

答案 0 :(得分:1)

您应该可以使用以下内容:

Find: (\S+),\s\S*
Replace: The $1

或包含The ..

Find: (\S+),\s+(\S+)
Replace: $2 $1

根据您的编辑器,您可能最好使用\1\2等来捕获群组。

答案 1 :(得分:0)

由于您需要在逗号之前专门捕获标题,请执行以下操作:

(^|\n)(.*), The

替换它将“the”放在正确的位置:

\1The \2

答案 2 :(得分:0)

Regular expressions定义匹配但不替换。

如何以及以何种方式执行替换高度依赖于应用程序

大多数提供正则表达式支持的编辑器都在每行一行上工作。

其中一些将允许替换,如

s/^(.*Banana)/INSERTED LINE\n\1/

然后在每次匹配之前插入特定模式。请注意,其他人可能根本不允许替换模式中的换行符。在VIM中,您可以使用Ctrl+K Return Return在命令提示符中输入换行符。 YMMV。

在Java中,您只需先打印插入文本,然后打印匹配的行。