【发布时间】:2013-08-14 07:06:47
【问题描述】:
我有以下字符串:
"xya", "yyy", "zzz", 'x', new ItemStack(Item.stick, 1, 0) , 'y', new ItemStack(Item.stick, 1, 0) , 'z', new ItemStack(Block.stone, 1, 0)
我正在尝试编写一个正则表达式来防止用户插入错误的输入(很像编译器,不是吗?)。
我要匹配的第一件事是“xya”。在这个双引号组内只能存在字母 x/y/z 或其中不超过 3 个字符的空格。所以一个有效的输入应该是:“xxx”或“xyz”或“x”(是的,这是一个 Minecraft 配方)。
这是我目前的正则表达式:
\s*([\"][xyz]{3}[\"][,])
它匹配, "yyy" 和"zzz",,但我希望它中止,因为“xya”不是有效输入,但引擎会继续搜索所有字符串。
我首先使用Rad Software Regular Expression Designer 来测试我的正则表达式。
【问题讨论】:
-
我想出了这个:\s*[\"]([xyz]+{1, 3}|[xyz]+\s{1,2})["]
-
你最终打算将正则表达式用于什么? (哪种语言或环境)有些提供
\G锚,以确保所有匹配项都是相邻的。 -
Java。我已经有了这个程序,但我需要这个正则表达式来防止任何用户输入错误。