소스 검색

feat: cleanup change info udf

JimZhang 2 년 전
부모
커밋
720123c4b6
1개의 변경된 파일27개의 추가작업 그리고 0개의 파일을 삭제
  1. 27 0
      src/main/java/com/winhc/bigdata/udf/StringCleanupChangeInfo.java

+ 27 - 0
src/main/java/com/winhc/bigdata/udf/StringCleanupChangeInfo.java

@@ -0,0 +1,27 @@
+package com.winhc.bigdata.udf;
+
+import com.aliyun.odps.udf.UDF;
+import com.aliyun.odps.utils.StringUtils;
+
+import java.util.regex.Pattern;
+
+/**
+ * @author ZhangJi
+ * @since 2022-03-30 13:35
+ */
+public class StringCleanupChangeInfo extends UDF {
+    private static final Pattern first_p = Pattern.compile("[^\\u4e00-\\u9fa50-9a-zA-Z()()]");
+    private static final Pattern second_p = Pattern.compile("[((][^((]+[))]$");
+    private static final Pattern third_p = Pattern.compile("[^\\u4e00-\\u9fa50-9a-zA-Z]");
+
+    public String evaluate(String val) {
+        if (StringUtils.isEmpty(val)) return "";
+        val = first_p.matcher(val).replaceAll("");
+        val = second_p.matcher(val).replaceAll("");
+        return third_p.matcher(val).replaceAll("");
+    }
+
+    public static void main(String[] args) {
+        System.out.println(new StringCleanupChangeInfo().evaluate("f (xx()))===="));
+    }
+}