20 个解决方案
#1
加\
如
string str = "[[[[[]]]]()()(";
string pstr = @"[\[\]\(\)]+";
如
string str = "[[[[[]]]]()()(";
string pstr = @"[\[\]\(\)]+";
#2
重新描述一下问题:
用正则表达式类实现文件名字符串替换代码(用新字符串替换旧文件名中指定的部分),文件名中存在正则表达式中的功能字符,如何在做替换时排除这些(存在于文件名字符串中的)功能字符的干扰?
用正则表达式类实现文件名字符串替换代码(用新字符串替换旧文件名中指定的部分),文件名中存在正则表达式中的功能字符,如何在做替换时排除这些(存在于文件名字符串中的)功能字符的干扰?
#3
不要中括号了?
#4
你举例....
比你描述简单
比你描述简单
#5
TO:#1楼
加了@后使\失效,个人理解:string pstr = @"[\[\]\(\)]+";的功能为:
匹配"\[\]\(\)"这个字符串出现1次或多次的字符串。
加了@后使\失效,个人理解:string pstr = @"[\[\]\(\)]+";的功能为:
匹配"\[\]\(\)"这个字符串出现1次或多次的字符串。
#6
TO:#3楼,#4楼
举例:
文件:[人人影视][迷失.Lost]][S04E01].rmvb
[人人影视][迷失.Lost]][S04E02].rmvb
。。。
[人人影视][迷失.Lost]][S04E12].rmvb
用一个循环改文件名。去掉文件名中的“[人人影视]”。
替换语句为:
新文件名=Regex.Replace(原文件名,"[人人影视]" , "", RegexOptions.IgnoreCase);
现在的结果是:新文件名=[][迷失.Lost]][S04E01].rmvb
与想要的结果新文件名=[迷失.Lost]][S04E01].rmvb不符
另外:考虑到文件名中还可包含其它字符,如:(),+,...,要把所有这些正则表达式中的功能字符(串)都考虑进去。
举例:
文件:[人人影视][迷失.Lost]][S04E01].rmvb
[人人影视][迷失.Lost]][S04E02].rmvb
。。。
[人人影视][迷失.Lost]][S04E12].rmvb
用一个循环改文件名。去掉文件名中的“[人人影视]”。
替换语句为:
新文件名=Regex.Replace(原文件名,"[人人影视]" , "", RegexOptions.IgnoreCase);
现在的结果是:新文件名=[][迷失.Lost]][S04E01].rmvb
与想要的结果新文件名=[迷失.Lost]][S04E01].rmvb不符
另外:考虑到文件名中还可包含其它字符,如:(),+,...,要把所有这些正则表达式中的功能字符(串)都考虑进去。
#7
新文件名=Regex.Replace(原文件名, @"\[人人影视\]", "")
#8
原文件名中有什么字符根本不用去考虑,只在乎于正则
#9
还有你这个功能直接可以用
新文件名=原文件名.Replace("[人人影视]","");
新文件名=原文件名.Replace("[人人影视]","");
#10
TO:#7楼
新文件名=Regex.Replace(原文件名, @"\[人人影视\]", "")
-------------------
"["位置不定。如果文件名换成:[迷失.Lost]][人人影视][S04E01].rmvb
或:[迷失.Lost]][人人影视RRYS][S04E01].rmvb
代码就失效。
新文件名=Regex.Replace(原文件名, @"\[人人影视\]", "")
-------------------
"["位置不定。如果文件名换成:[迷失.Lost]][人人影视][S04E01].rmvb
或:[迷失.Lost]][人人影视RRYS][S04E01].rmvb
代码就失效。
#11
TO:#8楼
原文件名中有什么字符根本不用去考虑,只在乎于正则
-------------
正是想求这样与字符串无关的正则
TO:#9楼
参照#10楼
之所以没有用字符串类的Replace,是因为在程序中还要用到正则
原文件名中有什么字符根本不用去考虑,只在乎于正则
-------------
正是想求这样与字符串无关的正则
TO:#9楼
参照#10楼
之所以没有用字符串类的Replace,是因为在程序中还要用到正则
#12
新文件名=Regex.Replace(原文件名, @"\[[^\]]*人人影视[^\]]*\]", "")
#13
请问:字符串类的Replace可以不区分大小写吗?
#14
#15
TO:#12楼
新文件名=Regex.Replace(原文件名, @"\[[^\]]*人人影视[^\]]*\]", "")
-------------------
如果文件名换成:[迷失.Lost](人人影视)[S04E01].rmvb,或者[迷失.Lost]+人人影视+[S04E01].rmvb呢?
看来还是得分情况讨论啊,这里用字符串类的Replace,需要用正则时再用正则,多写一些代码。
只是现在不知道字符串类的Replace如何设置不区分大小写匹配。
新文件名=Regex.Replace(原文件名, @"\[[^\]]*人人影视[^\]]*\]", "")
-------------------
如果文件名换成:[迷失.Lost](人人影视)[S04E01].rmvb,或者[迷失.Lost]+人人影视+[S04E01].rmvb呢?
看来还是得分情况讨论啊,这里用字符串类的Replace,需要用正则时再用正则,多写一些代码。
只是现在不知道字符串类的Replace如何设置不区分大小写匹配。
#16
@"[\[\(\+][^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]"
#17
TO:#16楼
"[\[\(\+][^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]"
------------------
文件名为:[迷失.Lost]+人人影视[S04E01].rmvb
失效
"[\[\(\+][^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]"
------------------
文件名为:[迷失.Lost]+人人影视[S04E01].rmvb
失效
#18
@"[\[\(\+]?[^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]?"
还有失效的话你自己解决吧。。。
还有失效的话你自己解决吧。。。
#19
#20
to:#18楼
字符串:[迷失.Lost]+人人影视[S04E01].rmvb
[\[\(\+]?[^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]?
匹配的是: +人人影视[S04E01]
所以仍然失效。
字符串:[迷失.Lost]+人人影视[S04E01].rmvb
[\[\(\+]?[^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]?
匹配的是: +人人影视[S04E01]
所以仍然失效。
#21
#1
加\
如
string str = "[[[[[]]]]()()(";
string pstr = @"[\[\]\(\)]+";
如
string str = "[[[[[]]]]()()(";
string pstr = @"[\[\]\(\)]+";
#2
重新描述一下问题:
用正则表达式类实现文件名字符串替换代码(用新字符串替换旧文件名中指定的部分),文件名中存在正则表达式中的功能字符,如何在做替换时排除这些(存在于文件名字符串中的)功能字符的干扰?
用正则表达式类实现文件名字符串替换代码(用新字符串替换旧文件名中指定的部分),文件名中存在正则表达式中的功能字符,如何在做替换时排除这些(存在于文件名字符串中的)功能字符的干扰?
#3
不要中括号了?
#4
你举例....
比你描述简单
比你描述简单
#5
TO:#1楼
加了@后使\失效,个人理解:string pstr = @"[\[\]\(\)]+";的功能为:
匹配"\[\]\(\)"这个字符串出现1次或多次的字符串。
加了@后使\失效,个人理解:string pstr = @"[\[\]\(\)]+";的功能为:
匹配"\[\]\(\)"这个字符串出现1次或多次的字符串。
#6
TO:#3楼,#4楼
举例:
文件:[人人影视][迷失.Lost]][S04E01].rmvb
[人人影视][迷失.Lost]][S04E02].rmvb
。。。
[人人影视][迷失.Lost]][S04E12].rmvb
用一个循环改文件名。去掉文件名中的“[人人影视]”。
替换语句为:
新文件名=Regex.Replace(原文件名,"[人人影视]" , "", RegexOptions.IgnoreCase);
现在的结果是:新文件名=[][迷失.Lost]][S04E01].rmvb
与想要的结果新文件名=[迷失.Lost]][S04E01].rmvb不符
另外:考虑到文件名中还可包含其它字符,如:(),+,...,要把所有这些正则表达式中的功能字符(串)都考虑进去。
举例:
文件:[人人影视][迷失.Lost]][S04E01].rmvb
[人人影视][迷失.Lost]][S04E02].rmvb
。。。
[人人影视][迷失.Lost]][S04E12].rmvb
用一个循环改文件名。去掉文件名中的“[人人影视]”。
替换语句为:
新文件名=Regex.Replace(原文件名,"[人人影视]" , "", RegexOptions.IgnoreCase);
现在的结果是:新文件名=[][迷失.Lost]][S04E01].rmvb
与想要的结果新文件名=[迷失.Lost]][S04E01].rmvb不符
另外:考虑到文件名中还可包含其它字符,如:(),+,...,要把所有这些正则表达式中的功能字符(串)都考虑进去。
#7
新文件名=Regex.Replace(原文件名, @"\[人人影视\]", "")
#8
原文件名中有什么字符根本不用去考虑,只在乎于正则
#9
还有你这个功能直接可以用
新文件名=原文件名.Replace("[人人影视]","");
新文件名=原文件名.Replace("[人人影视]","");
#10
TO:#7楼
新文件名=Regex.Replace(原文件名, @"\[人人影视\]", "")
-------------------
"["位置不定。如果文件名换成:[迷失.Lost]][人人影视][S04E01].rmvb
或:[迷失.Lost]][人人影视RRYS][S04E01].rmvb
代码就失效。
新文件名=Regex.Replace(原文件名, @"\[人人影视\]", "")
-------------------
"["位置不定。如果文件名换成:[迷失.Lost]][人人影视][S04E01].rmvb
或:[迷失.Lost]][人人影视RRYS][S04E01].rmvb
代码就失效。
#11
TO:#8楼
原文件名中有什么字符根本不用去考虑,只在乎于正则
-------------
正是想求这样与字符串无关的正则
TO:#9楼
参照#10楼
之所以没有用字符串类的Replace,是因为在程序中还要用到正则
原文件名中有什么字符根本不用去考虑,只在乎于正则
-------------
正是想求这样与字符串无关的正则
TO:#9楼
参照#10楼
之所以没有用字符串类的Replace,是因为在程序中还要用到正则
#12
新文件名=Regex.Replace(原文件名, @"\[[^\]]*人人影视[^\]]*\]", "")
#13
请问:字符串类的Replace可以不区分大小写吗?
#14
#15
TO:#12楼
新文件名=Regex.Replace(原文件名, @"\[[^\]]*人人影视[^\]]*\]", "")
-------------------
如果文件名换成:[迷失.Lost](人人影视)[S04E01].rmvb,或者[迷失.Lost]+人人影视+[S04E01].rmvb呢?
看来还是得分情况讨论啊,这里用字符串类的Replace,需要用正则时再用正则,多写一些代码。
只是现在不知道字符串类的Replace如何设置不区分大小写匹配。
新文件名=Regex.Replace(原文件名, @"\[[^\]]*人人影视[^\]]*\]", "")
-------------------
如果文件名换成:[迷失.Lost](人人影视)[S04E01].rmvb,或者[迷失.Lost]+人人影视+[S04E01].rmvb呢?
看来还是得分情况讨论啊,这里用字符串类的Replace,需要用正则时再用正则,多写一些代码。
只是现在不知道字符串类的Replace如何设置不区分大小写匹配。
#16
@"[\[\(\+][^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]"
#17
TO:#16楼
"[\[\(\+][^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]"
------------------
文件名为:[迷失.Lost]+人人影视[S04E01].rmvb
失效
"[\[\(\+][^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]"
------------------
文件名为:[迷失.Lost]+人人影视[S04E01].rmvb
失效
#18
@"[\[\(\+]?[^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]?"
还有失效的话你自己解决吧。。。
还有失效的话你自己解决吧。。。
#19
#20
to:#18楼
字符串:[迷失.Lost]+人人影视[S04E01].rmvb
[\[\(\+]?[^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]?
匹配的是: +人人影视[S04E01]
所以仍然失效。
字符串:[迷失.Lost]+人人影视[S04E01].rmvb
[\[\(\+]?[^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]?
匹配的是: +人人影视[S04E01]
所以仍然失效。