Как установить первый символ с помощью регулярных выражений? - PullRequest
2 голосов
/ 14 октября 2010

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

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

[^=].

ab, b2 и т. Д.и =a не будет.

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

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

Обновление

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

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

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

Ответы [ 5 ]

5 голосов
/ 14 октября 2010

Попробуйте заглянуть в будущее:

^(?!=)

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

3 голосов
/ 14 октября 2010

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

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

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

Вот альтернатива без заглядывания в будущее /^([^=]|$)/

^        <- Starts with
(        <- Start of a group
  [^=]     <- Any char but =
  |        <- Or
  $        <- End of the match
)        <- End of the group
1 голос
/ 14 октября 2010

Вам не нужен RegEx. Существует String.StartsWith ...

if ( ! theString.StartsWith("=") ) {
   ...
0 голосов
/ 14 октября 2010

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

0 голосов
/ 14 октября 2010

Привязка к началу и концу, и сделать все это необязательным.

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