为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式:在段落中出现任何字符串列表后删除任何单词中的后缀字符串

正则表达式:在段落中出现任何字符串列表后删除任何单词中的后缀字符串

慕容3067478 2023-06-21 15:38:29
我有一个更大的字符串和一个字符串列表。我想更改较大的字符串,以便 - 对于列表中较大字符串中出现的任何字符串,删除后缀部分直到下一个空格。更大的字符串WITH dataTab0 AS (SELECT TO_CHAR(to_date(tab_0_0.times),'YYYYMMDD')  AS TIME_ID_CATEGORYe93bc60a0041,tab_0_0.request_id AS PAGE_IMPRESSIONf6beefc4b44e4b  FROM full_contents_2列表TIME_ID_CATEGORY PAGE_IMPRESSION ...我需要删除像 e93bc60a0041 和 f6beefc4b44e4b 这样的后缀,它们在 TIME_ID_CATEGORY 和 PAGE_IMPRESSION 之后出现我期待以下结果。我需要在 java 中基于正则表达式/有效的解决方案来实现相同的目的。WITH dataTab0 AS (SELECT TO_CHAR(to_date(tab_0_0.times),'YYYYMMDD')  AS TIME_ID_CATEGORY,tab_0_0.request_id AS PAGE_IMPRESSION  FROM full_contents_2
查看完整描述

2 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

像这样的事情怎么样?本质上将 TIME_ID_CATEGORY 或 PAGE_IMPRESSION 匹配到组 1,并将其后的任何内容(即后缀)匹配为组 2。

(TIME_ID_CATEGORY|PAGE_IMPRESSION)(\w+)

正则表达式演示

然后只需将第 2 组的内容替换为空字符串即可。或者只是替换为 Group 1,这也将消除后缀(请参见下面的代码片段)。

示例代码片段:

public static void main(String args[]) throws Exception {


    String line = "WITH dataTab0 AS (SELECT TO_CHAR(to_date(tab_0_0.times),'YYYYMMDD')  AS TIME_ID_CATEGORYe93bc60a0041,tab_0_0.request_id AS PAGE_IMPRESSIONf6beefc154b44e4b  FROM full_contents_2";

    Pattern p = Pattern.compile("(TIME_ID_CATEGORY|PAGE_IMPRESSION)(\\w+)");

    Matcher m = p.matcher(line);

    if (m.find()) {

        String output = m.replaceAll("$1");

        System.out.println(output);

        //WITH dataTab0 AS (SELECT TO_CHAR(to_date(tab_0_0.times),'YYYYMMDD')  AS TIME_ID_CATEGORY,tab_0_0.request_id AS PAGE_IMPRESSION  FROM full_contents_2


    }


}


查看完整回答
反对 回复 2023-06-21
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

我的猜测是,也许是一个简单的表达,

[a-f0-9]{14}

如果我们只有那些 14 长度的子字符串,则替换为空字符串可能实际上在这里起作用。

查看完整回答
反对 回复 2023-06-21
  • 2 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信