Regex xsd中的正则表达式、模式匹配
我想知道除了Regex xsd中的正则表达式、模式匹配,regex,Regex,我想知道除了*和+之外,如何为任何字符生成正则表达式。我尝试了([^*+])和(\[^*+]),但这两个表达式似乎都不正确。有人能给我指一下正确的方向吗?谢谢 编辑:这是一个代码片段。我已将下面建议的reg-ex附加到visual studio中,当我输入常规字符串时,它仍会生成错误 <xsd:element name="elementName"> <xsd:simpleType> <xsd:restriction base="xsd:str
*
和+
之外,如何为任何字符生成正则表达式。我尝试了([^*+])
和(\[^*+])
,但这两个表达式似乎都不正确。有人能给我指一下正确的方向吗?谢谢
编辑:这是一个代码片段。我已将下面建议的reg-ex附加到visual studio中,当我输入常规字符串时,它仍会生成错误
<xsd:element name="elementName">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="/^[^*+]+$/"></xsd:pattern>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
编辑:我使用的示例字符串是“test”
结果是模式约束在当前注册表项下失败,例如:/^[^*+]+$/
您已接近:
[^*+]
请注意,没有必要转义方括号内的这些字符,因为它们在方括号中没有特殊意义
编辑:根据:
请注意,字符类中唯一的特殊字符或元字符是右括号(])、反斜杠()、插入符号(^)和连字符(-)。通常的元字符是字符类中的普通字符,不需要反斜杠转义。要搜索星号或加号,请使用[+*]。如果转义character类中的常规元字符,则正则表达式可以正常工作,但这样做非常重要
降低可读性
所以问题不在于角色转义。也许你需要匹配所有这些事件。在这种情况下,请查找@Cfreak的答案。您需要测试整个字符串。但实际上您不必在character类中转义它:
/^[^*+]+$/
在中,不能添加正则表达式分隔符(即,/^[^*+]+$/
两端的/
)。您也不需要使用锚定(即,开头是^
,结尾是$
);所有正则表达式匹配都自动锚定在两端。该行应改为:
<xsd:pattern value="[^*+]+"></xsd:pattern>
…意思是整个元素必须由一个或多个字符组成,除了
*
和+
你的答案被列为他尝试过的事情之一。。。你确定他们不能逃脱吗?奇怪的是,他声称已经试过了。@g.d.d.c也许这不是所有的正则表达式引擎都是如此。。也许他可以试着在他试过的地方给我们完整的代码样本。@Gabi-问题是你需要测试整个字符串。它将只测试第一个字符。看看我的答案。也许你的工具默认会这么做,但大多数编程语言都不会。我在原始问题后面附加了一段代码片段。我做错什么了吗?如果我去掉模式匹配,当我输入一个常规字符串时,它不会产生错误……否则reg-ex似乎对我不起作用。谢谢@g、 d.d.c:您不必在表达式中转义它们,但您可能需要在代码中转义它们,以便正则表达式看到适当的未转义值,这取决于您定义正则表达式的方式。当我尝试输入该模式时,仍然会遇到模式约束失败。我不熟悉visual studio。您可能需要删除开头和结尾的/
字符great!这很有效。您能解释一下语句末尾的美元符号的含义吗?它与字符串的结尾相匹配。是的,您需要删除斜杠。您也不需要锚定(^
和$
),但是XSL处理器可能会忽略这些锚定。