Регулярное выделение в другом выделении

1

поэтому у меня есть строка вроде этого:

var a = " 'asdf'+'asdf'+'we' + 1";

Я могу выбрать три кавычки:

'([^']*)'

Как выбрать начало одиночной кавычки (') в строке с помощью regex? А также отдельное регулярное выражение для выбора конца одиночной кавычки (')? Возможно ли это с регулярным выражением? Я заменил начало цитаты на <<.

Окончательная строка будет выглядеть так:

 " <<asdf'+<<asdf'+<<we' + 1"
  • 0
    Я сомневаюсь, что тебе это действительно нужно. Какую конечную цель вам нужно достичь здесь? Изменение выглядеть ....? a
  • 0
    @Wiktor: я пытаюсь заменить 'в начале на <<, поэтому итоговая строка будет выглядеть так: "<< asdf' + << asdf '+ << we' + 1"
Показать ещё 2 комментария
Теги:
regex-greedy

1 ответ

1
Лучший ответ

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

var a = " 'asdf'+'asdf'+'we' + 1";
console.log(
    a.replace(/'([^']*')/g, '<<$1')
);
// And, to replace both ' in one go (notice the ) shift to the left):
console.log(
    a.replace(/'([^']*)'/g, '<<$1>>')
);

Вот,

  • ' - соответствует и потребляет '
  • ([^']*') - сопоставляет и захватывает в группу 1 ноль или более символов, отличных от '[^']*), а затем a '. $1 в шаблоне замены является заполнителем для содержимого, хранящегося в группе 1 после того, как будет найдено действительное соответствие.
  • ([^']*) - только фиксирует любые символы 0+, отличные от ' в группу 1, поэтому окончательный ' сопоставляется и потребляется и будет отсутствовать в содержимом заполнителя $1.

Кроме того, см. Демо-версию regex 1 и демо-версию regex 2.

  • 0
    благодарю вас! еще один вопрос, как бы я мог соответствовать 'в конце пары? так что я получу строку: «<< asdf >> + << asdf >> + << we >> + 1»
  • 1
    @wonghenry Та же идея, и ваше регулярное выражение уже готово к этому. Просто используйте a=a.replace(/'([^']*)'/g, '<<$1>>') .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню