Как я могу проверить, содержит ли строка определенный характер в Regex? - PullRequest
0 голосов
/ 08 января 2010

Как я могу проверить, содержит ли строка в любой позиции один или несколько символов '/' в регулярном выражении?

Спасибо.

Ответы [ 8 ]

2 голосов
/ 08 января 2010

Вам действительно нужно проверить, есть ли в строке символ '/'? Если это так, вы можете рассмотреть возможность использования встроенного метода на любом языке, на котором вы пишете код:

bool containsSlash = myString.IndexOf('/') >= 0;

В противном случае вы можете «убежать» от персонажа, используя следующие обозначения;

\/
2 голосов
/ 08 января 2010

избежать его с помощью обратной косой черты, например /

1 голос
/ 08 января 2010

Для этого вам не нужно регулярное выражение, есть гораздо более дешевые способы поиска персонажа Если вы используете c, я предлагаю вам использовать strrchr. С справочной страницы:

char * strrchr(const char *s, int c);

Функция strrchr () находит последнее вхождение с (преобразуется в char) в строке s. Если c \0', strrchr() locates the terminating \ 0 '.

Например:

bool contains(char c, char* myString) {
  return 0 != strrchr(myString, c);
}

contains("alex", 'x'); // returns true
contains("woo\\123", '\\'); // returns true
1 голос
/ 08 января 2010

API Regex, как правило, зависят от конкретной реализации, поэтому нам нужно знать, какой язык / инструмент вы используете, чтобы дать 100% правильный ответ. Но самый быстрый - просто

.*\/.*

Однако для этого типа вопросов гораздо эффективнее использовать API поиска строк. Регекс лучше всего подходит для сопоставления с образцами. Отфильтровывать по одному символу лучше всего через IndexOf или аналогичную функцию.

1 голос
/ 08 января 2010

Путем экранирования с \ (обратной косой чертой).

0 голосов
/ 08 января 2010

Я передам его вам в псевдо-Perl, потому что вы не просили ничего конкретного.

$has_slash = 0;
# first slash starts regex
# backslash escape the next slash
# because it is escaped, we're looking for this as a literal slash
# end the regex pattern with the final slash
if ($string =~ /\//) {
    $has_slash = 1;
}
0 голосов
/ 08 января 2010

Вы, вероятно, хотите \/+. Однако это зависит от двигателя.

0 голосов
/ 08 января 2010

В c #:

String sss = "<your string>";
Regex re1 = new Regex(@".*/.*");

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