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

Java 正则表达式:在段落中出现任何字符串列表后,删除任何单词中的后缀字符串,java,regex,string,string-matching,Java,Regex,String,String Matching,我有一个更大的字符串和一个字符串列表。我想改变较大的字符串,这样 -对于列表中较大字符串中出现的任何字符串,请删除后缀部分,直到下一个空格 更大的字符串 名单 我需要删除像e93bc60a0041和f6beefc4b44e4b这样的后缀,它们在时间\ ID \类别和页面\印象之后出现 我期待以下结果。我需要基于正则表达式/有效的java解决方案来实现同样的目标 WITH dataTab0 AS (SELECT TO_CHAR(to_date(tab_0_0.times),'YYYYMMDD')

我有一个更大的字符串和一个字符串列表。我想改变较大的字符串,这样 -对于列表中较大字符串中出现的任何字符串,请删除后缀部分,直到下一个空格

更大的字符串

名单

我需要删除像e93bc60a0041和f6beefc4b44e4b这样的后缀,它们在时间\ ID \类别和页面\印象之后出现

我期待以下结果。我需要基于正则表达式/有效的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

我猜可能是一个简单的表达

[a-f0-9]{14}
如果我们只有那14个长度的子字符串,那么替换为空字符串实际上可能在这里起作用


如果您希望探索/简化/修改该表达式,它已被删除 在的右上面板上进行了说明 . 如果你愿意,你可以 也可以观看,它将如何匹配 对照一些样本输入


像这样的怎么样?基本上将时间\ ID \类别或页面\印象匹配到第1组,并将后面的任何内容(即后缀)作为第2组

(TIME_ID_CATEGORY|PAGE_IMPRESSION)(\w+)

然后简单地用空字符串替换组2的内容。或者只替换为组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

    }

}

不是固定列表,它可以接近100。它不是固定的14位数字。这里的$1是什么意思。@VINOT10这是指组-$1是组1,$2是组2。
(TIME_ID_CATEGORY|PAGE_IMPRESSION)(\w+)
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

    }

}