【发布时间】:2017-05-09 16:21:05
【问题描述】:
我有文字:
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>";
我写正则表达式 (?<=(=))[+a-zA-Z0-9]+(?=(>| )) 来查找 manches
- 左
- 5
- FF80C0
- 5
- FF00FF
- +3
- FF00FF
但是java抛出异常
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0
+3
^
at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.sequence(Pattern.java:2123)
...
好的。我试试盾 + ((?<=(=))[\\+a-zA-Z0-9]+(?=(>| )))
但这没有用(是同样的错误)。为什么?
代码:
Matcher matcher = Pattern.compile("(?<=(=))[+a-zA-Z0-9]+(?=(>| ))").matcher(str);
while (matcher.find()) {
str= str.replaceAll(matcher.group(),'"' + matcher.group() + '"');
}
【问题讨论】:
-
因为:FONT SIZE=+3 + 是正则表达式中的一个特殊字符
-
抛出这个异常的代码在哪里?该错误表明您正在使用
+3作为模式。 -
我的正则表达式在regex101.com/r/x4Qudo/1和其他在线正则表达式中工作
-
无法在IDEONE上重现异常
-
@Henry 我添加了代码。对不起