此RegEx存在于xsd文件
中[^~|\t\n\r]+(~[^~|\t\n\r]+)?(\|[^~|\t\n\r]+(~[^~|\t\n\r]+)?)*
我仍然很擅长破译正则表达式。 据我所知,\ t \ n \ r引用制表符,换行符和回车符 我发现[]里面的^表示“不” 但我错过了这个特殊正则表达式的复杂性。
可以这样打破吗?
"[^~|\t\n\r]
+
(~[^~|\t\n\r]+)
?
(\|[^~|\t\n\r]
+
(~[^~|\t\n\r]+)?)*"
第一部分是指“不是|或制表符还是新行或回车?
其他部分似乎与〜和\?
的添加或更改几乎相同非常感谢任何帮助,谢谢!
答案 0 :(得分:1)
答案 1 :(得分:1)
关于\t
,\n
和\r
是标签和换行符,您是对的。
所以你有一个重复的角色类[^~|\t\n\r]+
。这表示“一个或多个字符,可以是~
,|
,\t
,\n
或\r
以外的任何字符。
模式从其中一个开始。
然后有另一个,前缀为~
字符,这是可选的(?
使其可选,括号使可选位包括~
和字符类)。
然后你有另一组括号*
,这意味着“重复零次或多次。这组括号包含你的角色类的第三个实例,这个时间前面是{{1然后是另一个可选的|
。
这个带括号的块和末尾的~
基本上是整个模式的其余部分的重复。它归结为由*
字符分隔的字符串的重复模式,每个字符可选地由|
分隔符字符细分为两个。