通过正则表达式

时间:2019-07-17 13:12:45

标签: java html regex

我想从html中删除特定单词。我在HTML中将HTML作为字符串处理。该单词必须嵌套在特定标签中。我想删除.wrapper,仅当它位于<template><style>中时,才不想删除html中的所有.wrappers

我尝试用正则表达式用空字符串替换单词,但是按我的需要它不起作用。我错过了一些东西,无法弄清楚是什么。

要处理的字符串:

String input = "<div><template><div><style>.wrapper #popup-popupTemplate1 .popup-content { width: 800px; height: 300px }</style></div></template><div>"

必需的输出(删除的特定单词.wrapper):

String output = "<div><template><div><style>#popup-popupTemplate1 .popup-content { width: 800px; height: 300px }</style></div></template><div>"

这对我不起作用,但是在在线正则表达式调试器中,此正则表达式选择了我所需的单词。

String result = input.replaceAll("<template>.*?<style>.*?(\\.wrapper).*?<\\/style>.*?<\\/template>", "");

2 个答案:

答案 0 :(得分:0)

  • “技巧”正在使用\K--> INFO <--

  • 还深入研究了懒惰的?的作用。

正则表达式:<template>.*?<style>.*?\K\.wrapper

https://regex101.com/r/ldnoFx/1

答案 1 :(得分:0)

您需要检查用更改后的字符串(replacedString)替换原始字符串(s1)中的匹配字符串(matched)的方法。

import java.util.regex.*;

    public class ReplaceExample { 

    public static void main(String args[]){  

    String s1 ="<div><template><div><style>.wrapper #popup-popupTemplate1 .popup-content { width: 800px; height: 300px }</style></div></template><div>"; 

    Pattern pattern = Pattern.compile("<template>(.*?)</template>");

    Matcher matcher = pattern.matcher(s1);

    if (matcher.find())
    {
        String matched = matcher.group(1);
        String replacedString = matched.replaceAll("(.wrapper)+","");        
        System.out.println(replacedString); 
    } 

    }

    }