我不确定我是否正确地解释了这个正则表达式

时间:2014-01-30 15:14:58

标签: regex

此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]+)?)*"

第一部分是指“不是|或制表符还是新行或回车?

其他部分似乎与〜和\?

的添加或更改几乎相同

非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

tools that can sort this out for you

Breakdown of regex

至于这个表达式的效用,完全取决于你在应用程序中输入的输入。

答案 1 :(得分:1)

关于\t\n\r是标签和换行符,您是对的。

所以你有一个重复的角色类[^~|\t\n\r]+。这表示“一个或多个字符,可以是~|\t\n\r以外的任何字符。

模式从其中一个开始。

然后有另一个,前缀为~字符,这是可选的(?使其可选,括号使可选位包括~和字符类)。

然后你有另一组括号*,这意味着“重复零次或多次。这组括号包含你的角色类的第三个实例,这个时间前面是{{1然后是另一个可选的|

这个带括号的块和末尾的~基本上是整个模式的其余部分的重复。它归结为由*字符分隔的字符串的重复模式,每个字符可选地由|分隔符字符细分为两个。