java – 用于获取特定数据的正则表达式
发布时间:2020-12-15 08:48:42 所属栏目:Java 来源:网络整理
导读:我有一个可以作为文本框读取的文件,我想只获得之后可用的数据 start=”n= and end=”n= ?xml version="1.0" encoding="utf-8"? !DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 1.0//EN" "SMIL10.dtd" head /head body audio start="n=10.815s" end="n=19.914s"/ /b
我有一个可以作为文本框读取的文件,我想只获得之后可用的数据
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 1.0//EN" "SMIL10.dtd"> <head> </head> <body> <audio start="n=10.815s" end="n=19.914s"/> </body> </xml> 我尝试过以下操作: String startTime = readString.replaceAll(".*start="n=|s.*","").trim(); String endTime = readString.replaceAll(".*end="n=|s.*","").trim(); Log.e("Start Time is :",startTime); Log.e("endTime Time is :",endTime); 它工作正常,只是获取开始时间和结束时间,但它也显示<?xml标签. 我该如何解决? 解决方法
请在Java中找到下面的解决方案,这适用于包含该字符串的任何数据
<audio start="n=........" end="n=......." /> import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { String inputData1 = "<?xml version="1.0" encoding="utf-8"?>"+ "<!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 1.0//EN" "SMIL10.dtd">" + "<head>" + "</head>" + "<body>" + "<audio start="n=10.815s" end="n=19.914s"/>" + "<sometag> <audio start="n=10.815s" end="n=20.914s"/> </sometag>" + "</body>" + "</xml>"; String inputData2 = "some data goes here with or without tags; <audio start="n=10.815s" end="n=20.914s"/>; askjdhfla "; Pattern pattern = Pattern.compile("<audio[^>]*starts*=s*"ns*=s*([^"]*)"[^>]*end="ns*=s*([^"]*)"[^>]*>"); Matcher matcher = pattern.matcher(inputData1); while(matcher.find()){ System.out.println("start="n="+matcher.group(1)+",& end="n="+matcher.group(2)+""); } } } Output For InputData1: start="n=10.815s,& end="n=19.914s start="n=10.815s,& end="n=20.914s Output For InputData2: start="n=10.815s,& end="n=20.914s (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |