Замена первого вхождения из End [duplicate]

У меня была аналогичная проблема в прошлом, в моем случае imbue и sync_with_stdio сделали трюк. Попробуйте следующее:

#include <iostream>
#include <locale>
#include <string>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    wcin.imbue(locale("en_US.UTF-8"));
    wcout.imbue(locale("en_US.UTF-8"));

    wstring s;
    wstring t(L" la Polynésie française");

    wcin >> s;
    wcout << s << t << endl;
    return 0;
}
23
задан Henrik Stenbæk 30 September 2010 в 10:50
поделиться

3 ответа

foo.replace(/,([^,]*)$/, ' and $1')

используйте привязку $ (конец строки), чтобы указать вам свою позицию, и найдите шаблон справа от индекса запятой, который не содержит никаких дополнительных запятых.

Изменить:

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

foo.replace(/,\s([^,]+)$/, ' and $1')
39
ответ дан annakata 21 August 2018 в 04:46
поделиться
  • 1
    +1, вероятно, лучше, чем использование \w, поскольку всплеск сделал, поскольку он более инклюзивный, например: jsbin.com/utedu/2 – T.J. Crowder 30 September 2010 в 11:04
  • 2
    Это также соответствует test1, test2, и создает для него test1, test2 and . Также он вставляет избыточный символ пространства для исходной строки ввода, потому что он забывает совместить символ пробела после ,. – splash 30 September 2010 в 11:50
  • 3
    @splash - см. править. Я довольно уверен, что ОП мог бы сделать эту модификацию сам, если требование более подробно, чем выражено, я не хочу делать предположения о том, что люди действительно хотели сказать. – annakata 30 September 2010 в 11:59
  • 4
    и я нет! ;-) – splash 30 September 2010 в 12:26
  • 5
    Я получаю Error: unexpected '/' in "foo.replace(/". – MERose 20 November 2015 в 14:53

шаблон поиска regex \ s ([^,] +) $

Line1: If not, sdsdsdsdsa sas ., sad, whaterver4
Line2: If not, fs  sadXD sad ,  ,sadXYZ!X
Line3: If not d,,sds,, sasa sd a, sds, 23233

Поиск с помощью паттернов находит Line1: whaterver4 Line3: 23233

Пока не находит Line2: sadXYZ! X Что отсутствует пробел

0
ответ дан ricksalmon 21 August 2018 в 04:46
поделиться
result = dialog.replace(/,\s(\w+)$/, " and $1");

$1 относится к первой группе захвата (\w+) соответствия.

4
ответ дан splash 21 August 2018 в 04:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: