Ruby regex, есть ли способ сопоставлять только литеральные совпадения? - PullRequest
2 голосов
/ 21 декабря 2010

Я пытаюсь разобрать, используя оператор case / when с регулярным выражением в нем.У меня возникли некоторые проблемы с матчем, так как он даст мне совпадение, даже если это не буквальное совпадение.

Пример:

Если я введу ($ 45, x), я получу обратно: "режим адреса: косвенный, x -> значение: 45" из этого регулярного выражения:

/[(][$][1-9a-fA-F]{1,2}\s*,\s*[xX]\s*[)]/

Теперь, если я введу ($ 45, p), я получу совпадение для этого регулярного выражения:

/[$][1-9a-fA-F]{2,4}/

Что понятно, но я бы хотел, чтобы совпадение выглядело только для буквальных совпадений.Если есть дополнительные символы, которые не совсем соответствуют регулярному выражению, я хочу, чтобы функция match возвращала false.

Существуют ли другие функции, такие как match () или дополнительные аргументы, которые могут быть переданы match () для получения этогоповедение?

1 Ответ

3 голосов
/ 21 декабря 2010

Из вашего вопроса немного неясно, что вы ищете.Ваше второе регулярное выражение соответствует подстроке

$45

Если вы хотите избежать этого, используйте якоря ^ и $, чтобы убедиться, что вся строка соответствуетЧто-то вроде:

^\(\$[1-9A-Za-z]+,\s*[xX]\s*\)$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...