Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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

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 str = "<HTML> <HEAD>\n" + "<TITLE>Управление разрывом строк </Title>\n" + "</HEAD>\n" + "<BODY>\n" + "<marquee>Это моя учебная страница.</marque

我有文字:

String str = "<HTML> <HEAD>\n" +
            "<TITLE>Управление разрывом строк </Title>\n" +
            "</HEAD>\n" +
            "<BODY>\n" +
            "<marquee>Это моя учебная страница.</marquee>\n" +
            "<H2>Меня зовут <kbd>Ольга. </kbd></H2>\n" +
            "<H3 align=\"center\">Я живу во <em>Владивостоке</em>.</H3>\n" +
            "<H4 align=\"right\">Моя маленькая родина - <font face=\"Academy\" color=\"Red\">Сахалин</font>. </H4>\n" +
            "<H5 align=left>ДВГУ - ВУЗ в котором я работаю.</H5>\n" +
            "<B>Здесь</B>\n" +
            "<I>продемонстрированы</I>\n" +
            "<Blink>различные</Blink>\n" +
            "<U> способы </U>\n" +
            "<KBD>управления </KBD>\n" +
            "<FONT SIZE=5 COLOR=FF80C0>шрифтом:</FONT> его\n" +
            "<FONT SIZE=5 COLOR=FF00FF>цветом</FONT> и\n" +
            "<FONT SIZE=+3 COLOR=FF00FF>размером.</FONT>\n" +
            "</BODY> </HTML>";
嗯。我尝试了shield+(
(?))

但这不起作用(也是同样的错误)。为什么?

代码:

Matcher matcher = Pattern.compile("(?<=(=))[+a-zA-Z0-9]+(?=(>| ))").matcher(str);
    while (matcher.find()) {
        str= str.replaceAll(matcher.group(),'"' + matcher.group() + '"');
    }
Matcher-Matcher=Pattern.compile((?))”).Matcher(str);
while(matcher.find()){
str=str.replaceAll(matcher.group(),“”'+matcher.group()+”);
}

您的问题不是来自您的模式,而是来自

replaceAll(...)
ReplaceAll在输入中使用正则表达式


您的输入来自str,在某个点上它是“+3”,其中包含一个悬挂的+…

您的错误与显示的正则表达式无关

问题在于,您使用匹配的结果值作为
replaceAll()
的参数,这些参数也是正则表达式

因为您不希望它们被解释为regex,所以需要对它们进行转义,或者更确切地说是“引用”它们,如下所示:

str = str.replaceAll(Pattern.quote(matcher.group()),
                     Matcher.quoteReplacement('"' + matcher.group() + '"'));
更新

但是,如果您只想在匹配的字符串周围加双引号,为什么不直接使用
replaceAll()
?像这样:

    str = str.replaceAll("(?<==)([+a-zA-Z0-9]+)(?=[> ])", "\"$1\"");
str=str.replaceAll((?)”,“\“$1\”);

因此:FONT SIZE=+3+是regex中的一个特殊字符,引发此异常的代码在哪里?该错误表明您正在使用
+3
作为模式。我的正则表达式已在中工作,其他联机正则表达式可在@Henry I添加的代码上重现异常。很抱歉
    str = str.replaceAll("(?<==)([+a-zA-Z0-9]+)(?=[> ])", "\"$1\"");