浏览代码

update Matcher

deason 5 年之前
父节点
当前提交
0671e31f28

+ 12 - 9
examcloud-core-questions-base/src/main/java/cn/com/qmth/examcloud/core/questions/base/CommonUtils.java

@@ -441,17 +441,20 @@ public final class CommonUtils {
      * @return
      */
     public static String getAttrValue(String questionStr, String attrName) {
-        Pattern pattern = Pattern.compile("a.*");
-        Matcher matcher = pattern.matcher(questionStr);
-        while (matcher.find()) {
-            String result = matcher.group();
-            String idstr = attrName + "=\".*?\"";
-            Pattern pattern02 = Pattern.compile(idstr);
-            Matcher matcher02 = pattern02.matcher(result);
-            while (matcher02.find()) {
-                return matcher02.group().replaceAll(attrName + "=\"", "").replaceAll("\"", "");
+        Pattern aPattern = Pattern.compile("a.*");
+        Matcher aMatcher = aPattern.matcher(questionStr);
+
+        if (aMatcher.find()) {
+            String idRegex = attrName + "=\".*?\"";
+            Pattern idPattern = Pattern.compile(idRegex);
+            Matcher idMatcher = idPattern.matcher(aMatcher.group());
+            if (idMatcher.find()) {
+                return idMatcher.group()
+                        .replaceAll(attrName + "=\"", "")
+                        .replaceAll("\"", "");
             }
         }
+
         return "";
     }
 

+ 1 - 1
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigProviderServiceImpl.java

@@ -602,7 +602,7 @@ public class ExtractConfigProviderServiceImpl implements ExtractConfigProviderSe
     private String matchAudioName(String source, String element, String attr) {
         String reg = "<" + element + "[^<>]*?\\s" + attr + "=['\"]?(.*?)['\"]?(\\s.*?)";
         Matcher m = Pattern.compile(reg).matcher(source);
-        while (m.find()) {
+        if (m.find()) {
             return m.group(1);
         }
         return "";

+ 1 - 1
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigServiceImpl.java

@@ -870,7 +870,7 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
     private String matchAudioName(String source, String element, String attr) {
         String reg = "<" + element + "[^<>]*?\\s" + attr + "=['\"]?(.*?)['\"]?(\\s.*?)";
         Matcher m = Pattern.compile(reg).matcher(source);
-        while (m.find()) {
+        if (m.find()) {
             return m.group(1);
         }
         return "";