2010-10-14 2 views
2

Первым символом может быть любое, кроме знака равенства (=).Как установить первый символ через регулярное выражение?

Я сделал следующее регулярное выражение:

[^=]. 

ab, b2 и т.д. будет проходить, и =a не будет.

Но дело в том, что я тоже хочу принять один символ:

a также должны быть приняты. Как я могу это сделать?

Update

Вы можете спросить, почему я это делаю. У меня есть URL REGEX

(?!=)((www\.|(https?|ftp)://)[.a-z0-9-]+\.[a-z0-9/_:@=.+?,#%&~-]*[^.'#!()?, ><;])

, но я не хочу, чтобы URL, который будет обработан, если он сразу же после = характера.

+1

Какой язык вы используете? C#? Рубин? – kennytm

+1

Какой язык вам нужен? – Benoit

+0

Извините, что, не упомянув об этом, C# – Alex

ответ

5

Попробуйте отрицательный предпросмотр:

^(?!=) 

^ соответствует началу ввода, и (?!...) негативный взгляд вперед. Он также соответствует пустой строке.

+0

Откуда вы знаете, что это регулярное выражение perl, которое здесь необходимо? :) – Benoit

+2

@Benoit, это синтаксис PCRE, поэтому поддерживается не только Perl. PHP, Java, JavaScript, Python и т. Д. Поддерживают синтаксис, который я опубликовал выше. –

+0

Я думаю, что это почти то, что мне нужно. Однако «^ (?! =) Aa» не принимает «aa», и мне также нужны пробелы. Поэтому я думаю, что «^» не должно быть в RegEx. Вы можете удивиться, почему я это делаю. У меня есть URL RegEx, но я не хочу, чтобы URL-адрес был разобран, если он сразу после символа '='. – Alex

0

Якорь в начале и в конце и сделайте все возможное.

^(?:[^=].*)?$ 
0

не могли бы вы просто использовать ^= и действовать, если нет совпадения в вашем коде?

3

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

String s = "myString"; 
if(s.Length == 0 || s[0] != '=') 
    //Your code here 

Если вы действительно хотите посмотреть на регулярное выражение @Bart solution.

Вот альтернатива без опережения /^([^=]|$)/

^  <- Starts with 
(  <- Start of a group 
    [^=]  <- Any char but = 
    |  <- Or 
    $  <- End of the match 
)  <- End of the group 
Смежные вопросы