Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
Java 如何使用正则表达式从字符串中排除子字符串的出现?_Java_Regex - Fatal编程技术网

Java 如何使用正则表达式从字符串中排除子字符串的出现?

Java 如何使用正则表达式从字符串中排除子字符串的出现?,java,regex,Java,Regex,我有以下两种形式的字符串输入 一, 这似乎可以通过使用String.contains()轻松解决: if(yourHtml.contains(“-->”){ //排除 }否则{ //提取您需要的内容 字符串内容= yourHtml.substring(“\和一个积极的前瞻找到我手头没有一个测试系统,所以我不能给你正则表达式,但是你应该在模式文档中查找一个叫做消极前瞻断言的东西。这允许你表达形式规则:如果不遵循这个,就匹配这个 它应该对您有所帮助:)正则表达式可能不是解决您问题的最佳答案。您是否

我有以下两种形式的字符串输入

一,



这似乎可以通过使用
String.contains()
轻松解决:

if(yourHtml.contains(“-->”){
//排除
}否则{
//提取您需要的内容
字符串内容=

yourHtml.substring(“
\和一个积极的前瞻找到我手头没有一个测试系统,所以我不能给你正则表达式,但是你应该在模式文档中查找一个叫做
消极前瞻断言的东西。这允许你表达形式规则:如果不遵循这个,就匹配这个


它应该对您有所帮助:)

正则表达式可能不是解决您问题的最佳答案。您是否尝试过将第一行与其他行分开,并查看它是否包含
-->

具体来说,类似于:

String htmlString;
String firstLine = htmlString.split("\r?\n")[0];
if(firstLine.contains("-->"))
    ;//no match
//match

例如,将该正则表达式应用于您的问题文本将找到两个匹配项,而原始正则表达式将找到一个更长的匹配项。

谢谢您提供的简单解决方案,但我也在寻找正则表达式解决方案。@Tahoe,是的!谢谢。修复了。非常感谢。这对我来说也很有效。只是在Java字符串中,我们必须使用\\而不是\\\避开反斜杠。
<!--XYZdfdjf., 15456, hdfv.4002
<!DOCTYPE
if (yourHtml.contains("-->")) {
    // exclude
} else {
    // extract the content you need
    String content = 
        yourHtml.substring("<!--".length(), yourHtml.indexOf("<!DOCTYPE"));
}
\<!--([\s\S](?!--\>))*?(?=\<\!DOCTYPE)
String htmlString;
String firstLine = htmlString.split("\r?\n")[0];
if(firstLine.contains("-->"))
    ;//no match
//match
Pattern p = Pattern.compile("(?s)<!--(?:(?!-->).)*<!DOCTYPE");
"(?s)<!--(?:(?!-->).)*?<!DOCTYPE"