【发布时间】:2016-01-29 17:06:22
【问题描述】:
我正在尝试在 notepad++ 中创建一个特殊的 RegEx 函数来修复一些最初为 Softni 格式的字幕 txt 文件,这些文件使用方括号作为斜体命令的特殊字符。这些文件最初是为 Softni 产品设计的,但当它们用于其他字幕应用程序时,并非所有命令都能正常工作。
在 Softni 格式中,斜体通过在应该是斜体的文本周围放置“[”和“]”来工作,如下所示:
This text has an [italic expression]
当斜体应用于行时,只需要在行首放置一个括号(可以使用“]”结束括号,也可以不使用)。
[This entire line is in italic
当字幕有两行时,斜体可以从开头一直延伸到第二行的结尾,或者如果有一个右括号指示斜体的结尾。
Line 1 with normal text and [italic text
that extends for the whole sencond line
Line 1 with some [italic text
that extends to some portion] of line 2
[Line 1 is in italic
and line 2 is in italic
如您所见,对于某些行,有一个以斜体开头的命令,但该命令没有结束字符(应该是“]”) 在Two line的情况下,有时第二行不以“[”开头,说明它们已经以斜体开头。
使用 RegEx,我尝试始终为所有行指定斜体的开始和结束。由于斜体可能在一行中多次开始和/或结束,RegEx 应该考虑到这一点。
[Italic word], normal text, [italic again
对于上述情况,我能够通过以下命令识别模式:
^.*\[(?!.*\]).*$
如果进行适当的更改,这条线会变成这样
[Italic word], normal text, [italic again]
但是,我找不到以下示例的正则表达式:
second line with text in italic], normal text,[and another italic text].
有人知道吗?我可以使用正则表达式,其中涉及两行,例如这一行
(^(?!.*\].*).*\[.*)(\r\n)(^(?!.*\[.*).*\])
但如果我能在没有这种特殊需要的情况下实现这一点,它会提供更好的代码。
【问题讨论】:
-
如果您可以将示例与必须匹配的部分组合在一起,将会很方便。你可以试试
^[^\]\[\n]*(?:\r?\n[^\]\[\n]*)?\]|\[[^\]\[\n]*(?:\r?\n[^\]\[\n]*)?\]?。
标签: regex subtitle square-bracket