【问题标题】:Invalid Resx file. '\' is an unexpected token. The expected token is '<!--' or '<[CDATA['Resx 文件无效。 '\' 是一个意外的标记。预期的标记是 '<!--' 或 '<[CDATA['
【发布时间】:2016-02-05 09:34:43
【问题描述】:

我试图将正则表达式放入一个 xml 文件的 Resx 文件中。 但是当我添加表达式时,它给出了以下错误。

Invalid Resx file. '\' is an unexpected token. The expected token is '<!--' or '<[CDATA['

reg 表达式为

^(?!\s)(?!.*\s\s)[\x20-\x7F]{1,35}(?<!\s)$

谢谢。

【问题讨论】:

  • 您是在文本编辑器中手动添加还是通过 Visual Studio 中的 RESX 编辑器添加?
  • 我认为&amp;lt;必须序列化为&amp;lt;,但最好的做法是在可以使用文字的地方使用CDATA块。

标签: c# regex xml


【解决方案1】:

因为它是一个XML文件,所以需要对特殊字符进行编码,即&amp;lt;变成&amp;lt;&amp;gt;变成&amp;gt;&amp;amp;变成&amp;amp;

所以存储为:

^(?!\s)(?!.*\s\s)[\x20-\x7F]{1,35}(?&amp;lt;!\s)$

【讨论】:

    【解决方案2】:

    Visual Studio 中的默认托管资源编辑器能够为您转义每个字符。您应该能够毫无问题地将您的正则表达式复制到其中。

    如果您随后以纯文本格式打开正则表达式文件,您会看到以下内容:

    <data name="foo" xml:space="preserve">
        <value>^(?!\s)(?!.*\s\s)[\x20-\x7F]{1,35}(?&lt;!\s)$</value>
    </data>
    

    【讨论】:

      猜你喜欢
      • 2021-12-10
      • 2018-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      相关资源
      最近更新 更多