我有像
这样的文字5 Cm Per Second - Makoto Shinkai Collection (2007) 3xDVD5 Copia 11 ITA JAP FRA MultiSub
Ai City - La Notte Dei Cloni (1986) DVD9 ITA JAP Sub ITA
Akira - The Ultimate Edition 3xDVD9_5 MULTI
AIKA (1997) (2xDVD5) MHost Ita Serie Completa
我想获得3种不同的解决方案
1。 名称+(年)
5 Cm Per Second - Makoto Shinkai Collection (2007)
Abenobashi (2002)
Ai City - La Notte Dei Cloni
Akira - The Ultimate Edition (2005)
2。 仅限年份
2007
1986
<empty row> => I need to mantain like empty row
1997
3。 说明
3xDVD5 Copia 11 ITA JAP FRA MultiSub
(4xDVD9) MHost Ita Serie Completa
The Ultimate Edition 3xDVD9_5 MULTI
(2xDVD5) MHost Ita Serie Completa
## 我在Notepad ++上尝试这些正则表达式(替换为空)
^.*(?=\))
\((.*?)\]
I don't know
但效果不好,无法在整个字符串中删除文本
@zzxyz
我试试你的正则表达式,但如果我有
则不行Hayao Miyazaki Collection (1979 - 2009) FullHD 1080p
Milo su Marte (2010) BluRay Rip 1080p x264 MKV ITA ENG - NST
Tokyo Ghoul (2014) BDRip 1080p DTS-HD MA 5.1+AC3 5.1 ITA AC3 2.0 JAP Sub ITA MKV-FBT
答案 0 :(得分:0)
对于您的问题,最好捕获您想要的文本并用它替换整行。这可以捕获您感兴趣的数据,并允许您重建它(在替换行中):
^(.*?) \s? (\(\d{4}\))? \s? (\(?\d*?x?DVD.*?)$
$1
是名称,$2
是日期(可选),$3
是说明
https://regex101.com/r/Y8MbHO/2
哦,对不起。 您需要删除正则表达式中的空格。为了清晰起见,我将其放入。
因此#1的替换字符串为$1 $2
,#2为$2
,而#3为$3
。
我应该注意\(\)
是字面值,而()
是捕获组。因此,如果您不想捕获(\(\d{4}\))?
但希望捕获\(?(\d{4})?\)?
(1986)
看起来像1986
编辑: 如果日期始终存在,您可以使用:
^(.*?) \s? (\(\d{4}-?\d*?\)) \s? (.*?)$