【问题标题】:Java regex to xmlJava 正则表达式到 xml
【发布时间】:2014-08-29 19:10:22
【问题描述】:

我在java中做了如下正则表达式:

(^(?!\\s+$).*[^\\/:*?\"<>|]+(\\.(?i)(txt|rtf|doc|docx|htm|html|pdf))$)

但我需要在 xml 架构中使用它,所以我已经更改为:

(^(?!\s+$).*[^\/:*?\&quot;&lt;&gt;|]+(\.(?i)(txt|rtf|doc|docx|htm|html|pdf))$)

但它的版本接受未列出扩展名的文件。怎么了?

【问题讨论】:

  • 为什么不使用任何 XML 解析 API?
  • ;&amp;lt in char 类并不表示字符串;&amp;lt。这意味着匹配;或 & 或 l 或 t
  • 对所有询问使用正则表达式解析 XML 的帖子的强制性评论:stackoverflow.com/a/1732454/18157
  • @JimGarrison 他不想用正则表达式解析 XML,他想将正则表达式模式存储在 XML 文件中......根本不是一回事;)编辑:那是我的第一个解释,现在我不太确定了……问题不是特别清楚。

标签: java xml regex


【解决方案1】:

您的正则表达式不应匹配任何内容:首先,“^”和“$”不是 XSD 正则表达式方言中的元字符,它们匹配文字“^”和“$”字符。这里还有许多 XSD 正则表达式不允许的其他构造。但是,您可能正在使用一种模式处理器,例如 Microsoft 自己的模式处理器,而不是遵循 W3C 规范。

如果您描述了您的要求,而不是要求我们通过对复杂的正则表达式进行逆向工程来解决它,这对我们来说会更容易。不要忘记您可以指定多个模式。如果您只想要求指定的扩展名之一,只需使用

.*\.(txt|rtf|doc|docx|htm|html|pdf)

【讨论】:

    猜你喜欢
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 2015-12-29
    相关资源
    最近更新 更多