我试图提出将视频文件名分组的REGEX,这样我就只能提取一个名字,然后用它来解析一些网络等。
电影的名称几乎(好吧,这可能是一个问题,我猜,因为它可能并不总是)在名字的第一个,然后有一些随机字母,数字等。
例如:
Batman.v.Superman.Dawn.of.Justice.2016.BLABLABLA-XDAWEFFF
所以它的分组如
(Batman.v.Superman.Dawn.of.Justice)(rest of the file)
然后我可以提取第一组,用空格替换点,我很高兴。
另一个例子:
Eye.in.the.Sky.2015.1080p.BluRay
成:
(Eye.in.the.Sky)(rest)
你们有没有正念我们?我不知道如何分隔它们,因为名字后面可能有任何单词,数字等。
答案 0 :(得分:2)
你最好的猜测是那种
([ .\w']+?)(\W\d{4}\W?.*)
但正如评论中提到的那样,由于电影片名没有标准,而你的命名惯例也没有,所以这并不总是有效。
所以这就是它的作用,一步一步:
([ .\w']+?)
[ .\w']
任何字符,例如 space , dot ,az,AZ,0-9,_和'
+?
必要时捕获有许多字符,直到表达式的第二部分
(\W\d{4}\W.*)
\W
任何不是a-z,A-Z,0-9,_ \d{4}
四个数字0-9 \W
任何不是a-z,A-Z,0-9,_ .*
任何内容,直到字符串结束答案 1 :(得分:0)
如果您的String没有任何可以通过Regex定义的指定表单,则无法执行此操作。
电影的问题在于它们的名字可以包含任何内容。
要解决您的问题,您可以使用一些分隔符来确定保存时名称的结尾:
Batman.v.Superman.Dawn.of.Justice|2016.BLABLABLA-XDAWEFFF
然后你可以使用例如:
String[] s = "Batman.v.Superman.Dawn.of.Justice|2016.BLABLABLA-XDAWEFFF".split("|");