Как найти весь текст до первого символа x в строке? - PullRequest
1 голос
/ 17 июля 2009

Извините, это, вероятно, действительно просто. Но если у вас есть символ разделителя в каждой строке и вы хотите найти весь текст перед разделителем в каждой строке, какое регулярное выражение будет делать это? Я не знаю, имеет ли значение разделитель, но у меня есть символ%.

Ответы [ 4 ]

1 голос
/ 17 июля 2009

Ваш текст будет в группе 1.

/^(.*?)%/

Примечание: это захватит все до знака процента. Если вы хотите ограничить то, что вы захватываете, замените. с escape-последовательностью на ваш выбор.

0 голосов
/ 17 июля 2009

Вы не говорите, что это за регулярное выражение, поэтому я буду использовать нотацию Perl.

/^[^%]*/m

Первый ^ является начальным якорем : обычно он соответствует только началу всей строки, но это регулярное выражение находится в многострочном режиме благодаря модификатору 'm' в конец. [^%] - это инвертированный класс символов : он соответствует любому одному символу, кроме «%». * является квантификатором , что означает совпадение с предыдущей вещью ([^%] в данном случае) ноль или более раз.

0 голосов
/ 17 июля 2009

В Python вы можете использовать:

def GetStuffBeforeDelimeter(str, delim):
  return str[:str.find(delim)]

В Java:

public String getStuffBeforeDelimiter(String str, String delim) {
  return str.substring(0, str.indexOf(delim));
}

В C ++ (не проверено):

using namespace std;
string GetStuffBeforeDelimiter(const string& str, const string& delim) {
  return str.substr(0, str.find(delim));
}

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

По сути, я бы использовал подстроки для чего-то такого простого, потому что вы можете избежать сканирования всей строки. Regex overkill , и «взрыв» или расщепление на разделителе также не нужны, потому что он смотрит на всю строку.

0 голосов
/ 17 июля 2009

вам не нужно использовать регулярные выражения, если вы не хотите. в зависимости от языка, который вы используете, будет какая-то строковая функция, такая как split ().

$str = "sometext%some_other_text";
$s = explode("%",$str,2);
print $s[0];

это в PHP, оно разделяется на% и затем получает первый элемент возвращаемого массива. так же, как и в других языках с методами расщепления.

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