Regex соответствующий вопрос - PullRequest
0 голосов
/ 14 февраля 2009

Хорошо, я пообещал себе, что однажды выучу регулярные выражения ... но сегодня не тот день.

Какое правильное выражение для соответствия #_ (где _ любой символ, КРОМЕ {)?


Пояснение:

Я работаю над системой подсветки синтаксиса для Ruby и определяю правила для комментариев. Спецификация, что '{' не должен быть включен, состоит в том, чтобы отличать комментарий от переменных, встроенных в строки.

Ответы [ 8 ]

10 голосов
/ 14 февраля 2009

Вы определяете класс символов внутри [] и отрицаете с помощью ^:

[^{] // i.e. a single character that is not {

Если вы добавите хеш-метку в начале, это приведет к:

#[^{] // i.e. # and then a single character that is not {
4 голосов
/ 14 февраля 2009

Мне кажется, это домашний вопрос CS 101.

Я подозреваю, что правильный ответ - на самом деле выучить регулярные выражения сегодня. Что вы пытаетесь сопоставить и почему?

4 голосов
/ 14 февраля 2009

В синтаксисе PCRE, #[^{]

0 голосов
/ 17 февраля 2009

Этот сайт отлично подходит для помощи: txt2re

Может не помочь с вашей проблемой, но поможет в будущем.

0 голосов
/ 17 февраля 2009

Если вы пытаетесь выделить синтаксис, сделайте себе одолжение и не пытайтесь взломать что-нибудь вместе с регулярными выражениями. Вы будете накапливать взломать сверху взломать сверху взломать, пока это не будет рассеянный беспорядок почти работ и достаточно. Поверь мне, ты будешь ненавидеть себя.

Перейдите непосредственно к использованию грамматики . Либо просто поместив одну из исходного кода, либо найдя существующую грамматику в Интернете.

0 голосов
/ 14 февраля 2009

Rubular - еще один замечательный веб-сайт для тестирования регулярных выражений.

0 голосов
/ 14 февраля 2009

Переработка - это инструмент, который поможет вам в интерактивном режиме изучать регулярные выражения.

0 голосов
/ 14 февраля 2009

^ # [^ {] $

Это мой ответ, если вы хотели просто сопоставить два символа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...