Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex查找内容,然后回溯到初始HTML标记_Html_Regex_Editor - Fatal编程技术网

Regex查找内容,然后回溯到初始HTML标记

Regex查找内容,然后回溯到初始HTML标记,html,regex,editor,Html,Regex,Editor,我正在尝试使用正则表达式来匹配一个字符串,该字符串以标记开头,并且具有某些特定内容。然后,我想替换从特定段落标记到页面末尾的所有内容 我已经尝试使用表达式进行简单输入,使用regex 首先,这是Java代码,但我想它可以很容易地适应其他正则表达式引擎/编程语言 据我所知,您需要一种情况,即给定的输入有一个以开头的部分,紧接着是一些目标内容/短语。然后,您想用其他内容替换初始标记后面的所有内容吗 如果这是正确的,您可以这样做: String input; // holds your input t

我正在尝试使用正则表达式来匹配一个字符串,该字符串以
标记开头,并且具有
某些特定内容。然后,我想替换从特定段落标记到页面末尾的所有内容


我已经尝试使用表达式
进行简单输入,使用regex


首先,这是Java代码,但我想它可以很容易地适应其他正则表达式引擎/编程语言

据我所知,您需要一种情况,即给定的输入有一个以
开头的部分,紧接着是一些目标内容/短语。然后,您想用其他内容替换初始
标记后面的所有内容吗

如果这是正确的,您可以这样做:

String input; // holds your input text/html
String targetPhrase = "some specific content"; // some target content/phrase
String replacement; // holds the replacement value

Pattern p = Pattern.compile("<p[^>]*>(" + targetPhrase + ".*)$", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(input);
m.replaceFirst(replacement);
字符串输入;//保存您的输入文本/html
字符串targetPhrase=“某些特定内容”//一些目标内容/短语
字符串替换;//持有重置价值
Pattern p=Pattern.compile(“]*>(“+targetPhrase+”*)$”,Pattern.CASE不区分大小写);
匹配器m=p.Matcher(输入);
m、 替换优先(替换);
当然,正如上面的评论所提到的,您确实不想将regex用于HTML

或者,如果您知道
标记就是这样,没有属性或任何东西,那么您可以尝试使用子字符串

例如,如果您正在查找
“某些特定内容”
,您可以尝试以下方法:

String input; // your input text/html
String replacement; // the replacement value(s)

int index = input.indexOf("<p>some specific content");
if (index > -1) {
    String output = input.substring(0, index);
    output += "<p>" + replacement;

    // now output holds your modified text/html
}
字符串输入;//您的输入文本/html
字符串替换;//重置价值
int index=input.indexOf(“某些特定内容”);
如果(索引>-1){
字符串输出=输入。子字符串(0,索引);
输出+=“”+替换;
//现在输出保存修改后的文本/html
}

您不应该使用正则表达式解析HTML!!!如上所述,正则表达式不能正确地表示所有HTML。它可能无法正确解析您的页面。我只是尝试在多个HTML页面中使用搜索和替换,并使用一些基本规则来增加灵活性,同时保持准确性。有更好的工具吗?您是否使用像PHP这样的后端程序来执行搜索/替换?或者只是一个文本编辑器?我目前正在使用EditPad Pro。我还有Microsoft FrontPage可用(叹气)。这能匹配回车和换行符吗?还是CR&LF完全打破了模式匹配?因为我记得在PHP中使用了正则表达式,所以我必须在匹配之前删除\r\n的第一个,才能成功匹配html代码的结尾。@DexterHuinda-您必须使用选项
/s
,因此代码应该是
$pattern=”/好的,'s'起作用,顺便说一句,这是什么意思?我知道g=global,I=不区分大小写,那么s是什么意思?@DexterHuinda-
/s
启用“单线模式”。在此模式下,点与换行符匹配。在尼斯学习更多。我只是想知道关于
s
的事情。我以前从未遇到过这种情况。感谢您提供的快速信息。标记确实有属性,不同页面的属性可能略有不同。我将尝试第一个,如果成功,接受你的答案。我也会用谷歌搜索除regex以外的其他工具,因为显然大家一致认为HTML和regex不是好朋友。第一个代码,
]*>
应该会阻塞所有属性。请确保您的工具不区分大小写。我发现很难将Java代码翻译成纯正则表达式,或者EditPad Pro上的搜索和替换函数所采用的任何形式。我尝试了]*>一些特定的内容。*但没有成功。我对regex很陌生(很明显),所以我不知道自己在做什么。我试着阅读EditPad Pro手册,这本手册很全面,但对于像我这样的初学者来说却令人困惑。尽管正则表达式和HTML不能很好地协同工作,但需要注意的是,这是一个查找和替换的一次性操作,不需要动态执行任何操作。您需要确保正则表达式引擎不区分大小写并接受多行输入。然后我强烈建议至少学习正则表达式的基础知识。