将点的大多数语法转换为" x,y"

时间:2015-06-30 19:07:29

标签: regex haxe

我正在开发一个Haxe项目,该项目完成后,允许用户通过输入普通英语在Haxe中编码。示例输入:

Create a number called "Foo".
Set Foo to 100.
Print Foo to the console.

现在,我尝试使用EReg(也称为RegExp或Regex)对象将大多数常用点语法转换为x,y,这是主转换函数可以轻松理解的内容。以下是我想要考虑的所有语法功能,以某种组合或其他方式:

100,200
100, 200
(100,200)
[100, 200]
x:100,y:200
(X:100, Y:200)
[ X: 100, y: 200 ]

这些字符串a中的每一个都应由具有r的正则表达式对象r.replace(a, "$1,$2")进行评估,以获得100,200。基本上,这包括:

  • 任何数量的空白
  • 一对可选的括号或括号
  • 可选的大写或小写x:y:
  • 但总是用逗号分隔两个数字。

我已经使用一些Regex或其他正确的方法获得了这些功能中的每一个,除了" x:" /" y:"在同一个。但由于我对Regex没有多少经验,我无法弄清楚如何同时评估所有这些条件。这是否可以在Regex的范围内,如果是这样,我怎么能这样做?

提前致谢!

1 个答案:

答案 0 :(得分:2)

试试:

[\(\[]? *([xX]: *)?(\d+), *(?:[yY]: *)?(\d+) *[\)\]]?

但我认为与整个模式相匹配并不是必要的。只需尝试匹配数字,例如:

(\d+), *(?:[yY]: *)?(\d+)