2015-01-13 21 views
0

我试图定义这个正则表达式来检测Scala的正则表达式未关闭的字符错误

我写了下面的代码我的XML文件中的标签:

val regex = """<!DOCTYPE[^>[]*(\[[^]]*\])?>""".r 

,但它给了我下面的错误

Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 27 
<!DOCTYPE[^>[]*(\[[^]]*\])?> 
         ^

我在做什么错?

回答

1
<!DOCTYPE[^>[]*(\[[^]]*\])?> 
      ↑  ↑ 

你应该逃脱套里面的][

<!DOCTYPE[^>\[]*(\[[^\]]*\])?> 
1

转义],[存在于字符类中。

val regex = """<!DOCTYPE[^>\[]*(\[[^\]]*\])?>""".r