为什么这不是有效的正则表达式

时间:2013-05-24 10:07:48

标签: java regex web-services

我在解析此'((([A-Z][,]+)+)([A-Z]?))|([A-Z]))'正则表达式

时遇到以下异常
WARNING: Exception message: org.xml.sax.SAXParseException; systemId: file:/u/bin/jakarta-tomcat-5.5.7/webapps/MyService/schema/version/1.2.35/RequestSchema.xsd; 
lineNumber: 1928; columnNumber: 38; InvalidRegex: Pattern value '((([A-Z][,]+)+)([A-Z]?))|([A-Z]))' is not a valid regular expression. The reported error was: 'Can't find resource for bundle java.util.PropertyResourceBundle, key parser.factor.0' at column '{2}'.
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)
com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(XSDHandler.java:4124)
com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaError(XSDHandler.java:4107)
com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDAbstractTraverser.reportSchemaError(XSDAbstractTraverser.java:721)
com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDSimpleTypeTraverser.getSimpleType(XSDSimpleTypeTraverser.java:406)
com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDSimpleTypeTraverser.traverseSimpleTypeDecl(XSDSimpleTypeTraverser.java:163)
com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDSimpleTypeTraverser.traverseGlobal(XSDSimpleTypeTraverser.java:104)
com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.traverseSchemas(XSDHandler.java:1431)
com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(XSDHandler.java:619)
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:588)
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:555)
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:521)
com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:240)

在这方面的任何帮助将受到高度赞赏。

4 个答案:

答案 0 :(得分:4)

最后一个右括号是无法比拟的。尝试删除它:

'((([A-Z][,]+)+)([A-Z]?))|([A-Z])'

或者匹配它:

'(((([A-Z][,]+)+)([A-Z]?))|([A-Z]))'

答案 1 :(得分:0)

试试这个:

'(((([A-Z][,]+)+)([A-Z]?))|([A-Z]))'

你遗失了一些括号。

答案 2 :(得分:0)

你的正则表达式的最后一个位置有一个额外的结束括号。删除它,然后尝试

((([A-Z][,]+)+)([A-Z]?))|([A-Z])

答案 3 :(得分:0)

你有六个“)”而且只有五个“(”

'(((([A-Z][,]+)+)([A-Z]?))|([A-Z]))'

此致 雨果佩德罗萨