gpt4 book ai didi

regex - 为 ' regexp ' 、 '\c+' 和 '\i\c* ' 评估 ' [\i-[:]][\c-[:]]* ' 的问题

转载 作者:行者123 更新时间:2023-12-04 19:13:26 25 4
gpt4 key购买 nike

我正在开发一个 TCL GUI,我从 XML 模式中获取了 GUI 的数据树结构,我必须像 XML 模式一样验证输入字段的限制。在我使用的 XML 模式中,我有简单类型 NMTOKEN Name 和 NCName 与模式限制' \c+ ' , ' \i\c* ' 和 ' [\i-[:]][\c-[:]]* ' 分别。
我用来检查的代码是

method validatePatternValue { value } { 
set patternCheck 1

set pattern "^($patternValue)\$"
set patternCheck [regexp $pattern $value]

if {$patternCheck == 0} {
tk_messageBox -message "Only Characters within range $patternValue for $patternValueType is\
accepted "
return 0
}

return 1
}

并且只要 $pattern 是其中之一' \c+ ' , ' \i\c* ' 和 ' [\i-[:]][\c-[:]]* ' 我的文本字段不接受任何输入并不断抛出错误异常对话框。

只是为了添加更多信息,我访问了这个网站,其中提供了一些关于我关于处理 ' \i 组合的问题的好信息。 ' 和 ' \c '。但是除了以下链接中建议的方法之外,还有没有其他方法: XML Schema Character Classes

最佳答案

\c转义序列在 Tcl regexp 中的作用与它在 XML-Schema regexp 中的作用不同。

在 XML 模式中

\c matches any character that may occur after the first character in an XML name, i.e. [-._:A-Za-z0-9]



在 Tcl

\cX (where X is any character) the character whose low-order 5 bits are the same as those of X, and whose other bits are all zero



您发送的链接中也明确说明了这一点

Note that the \c shorthand syntax conflicts with the control character syntax used in many other regex flavors.



您应该尝试使用 [-.:\w]而不是 \c \i也是如此,它在 Tcl 和 XML 中不一样

关于regex - 为 ' regexp ' 、 '\c+' 和 '\i\c* ' 评估 ' [\i-[:]][\c-[:]]* ' 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12792424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com