2015-06-30 2 views
1

Я работаю над проектом Haxe, который, по завершении, позволит пользователям вводить код в Haxe, набрав простой английский. Пример ввод:Преобразование большинства синтаксисов для точек в «x, y»

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

Сейчас я пытаюсь использовать Ерегли (также известные как 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 должны быть оценены с помощью Regex объекта r с r.replace(a, "$1,$2"), чтобы получить 100,200. В основном, это включает в себя:

  • Любое количество пробелов
  • Необязательное пара скобок или круглые скобки
  • Необязательный или прописных строчными x: и y:
  • но всегда два числа, разделенных запятой ,

Я получил каждую из этих функций правильно с некоторым Regex или другим, и у меня было все, кроме «x:»/«y:» в том же самом. Но поскольку у меня нет большого опыта работы с Regex, я не могу понять, как оценить все эти условия одновременно. Возможно ли это в рамках Regex, и если да, то как я мог это сделать?

Заранее благодарен!

+1

«два номера, разделенные запятой». Это можно сделать, используя '/.*? (\ D +). *,. *? (\ D +). * /'. Могут ли X и Y быть отменены? (например, '[y: 100, x: 100]'). Обратите внимание, что я использую регулярное выражение javascript. Не уверен, отличается ли он от haxe. –

+0

Я не думал об обратном X и Y! Это будет очень хороший вариант для включения. Благодаря! – ETHproductions

ответ

2

Просто попробуйте:

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

Но я думаю, что это не necessery, чтобы соответствовать весь рисунок. Просто попробуйте сопоставить цифры, например:

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

Спасибо за супер-быстрый ответ! Если бы я использовал ваше второе предложение, он не удалял скобки/круглые скобки, поскольку мне это нужно. Тем не менее, первый работает отлично, после того, как я заменил $ 1, $ 2 '$ 2, $ 4'. – ETHproductions

Смежные вопросы