使⽤正则表达式提取字符串中的完整句⼦(包括⽂字、空格、
标点)
关于正则表达式,⽹上有⾮常多的介绍和使⽤说明。但本⽂主要通过⼀个实际案例来说明如何使⽤正则表达式。
英语问候语
genius怎么用使⽤语⾔:C#
案例背景:博主想通过看美剧来学习英语,但⽹上的字幕⼏乎都是中英双语字幕,所以采⽤正则表达式将字幕中⽆⽤的部分去掉,只保留英
语原句。
string str = @"Dialogue: 0,0:01:47.29,0:01:49.17,*Default,NTP,0,0,0,,你真是太甜了\N{\fn微软雅⿊\fs14}Oh, that's so sweet."; //⼀句标准字幕,带时间轴、带参数、string pattern = "[^a-zA-Z+\\s+\\p{P}]"; //本案例使⽤的正则表达式
string replacestr = ""; //替换字符,将⽆⽤部分替换为""
treatment是什么意思>2012年学科评估
string result = Regex.Replace(str, pattern, replacestr);//将str按pattern的规则、把⽆⽤的字符替换成replacestr
console.writeline(result); //打印结果
撒播console.writeline(result.Split('}')[1].Trim()); //对结果再次处理并打印
24小时秒单业务平台开工奠基仪式以上代码每句都有注释,不再多说明。这⾥只解释正则表达式pattern的意思,这是⼀个由3个正则合成的表达式,拆分如下:
dmf是什么1 [^a-zA-Z]:保留字符串中a-z、A-Z的字符,通俗讲就是保留英⽂,^是⼀个逻辑符号,可以暂理解为否定,删除^的话,这句的意思就是
去掉英⽂
2 \s:去掉空格
3 \p{P}:去掉标点符号
PS:由于1、2、3合成了⼀个正则表达式,故^对2、3均有效,即保留空格和标点
多少钱用英语怎么说
执⾏以上代码,结果如下:
Dialogue: ,::.,::.,*Default,NTP,,,,,\N{\fn\fs}Oh, that's so sweet.
Oh, that's so sweet.harder to breathe
通过正则表达式处理的结果并不能满⾜我的需求,故采⽤string中的分割、获取、处理空格等操作再次加⼯,最终得到我需要的字符串。
经过如上处理,美剧的双语字幕就被我转化成可以直接阅读的英语句⼦了。仅以此例抛砖引⽟,请⼤家根据实际需求灵活变通。这⾥只拿⼀
句话举例,对于字幕⽂件的处理,请参考IO流、读写操作等⽂章,这⾥不再赘述。