Подбирайте строковые слова со специальными символами, такими как $ или! и заменить их - PullRequest
1 голос
/ 18 марта 2020

Необходимо обработать входную строку следующим образом -

// Input string - 
'My pen cost is !!penCost!! manufactured in $$penYear$$ with colors !!penColor1!! and $$penColor1$$'
// Processed string
'My pen cost is <penCost> manufactured in <penYear> with colors <penColor1> and <penColor1>'

Хотя мне удалось сделать это с помощью l oop, но мне интересно знать подход RegEx. Это текущее состояние моего эксперимента (в нерабочем состоянии) -

const regex = /\b(\w*([a-zA-Z])|([\!]{2}[a-zA-Z][\!]{2})\w*)\b/g;
// str is holding the input string
str.replace(regex, (match) => {
  return `<${match.substring(2, match.length - 2)}>`;
});

Я застрял на RegEx, чтобы правильно сопоставить слова, имеющие значение типа "$$ [a-zA-Z0-9] $ $ "or" !! [a-zA-Z0-9] !! ".

Мой подход состоит в комбинации совпадения слов и замены совпадений .

Ответы [ 3 ]

5 голосов
/ 18 марта 2020

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

str = str.replace(/(!!|\$\$)([\w-]+)\1/g, '<$2>');

Демонстрация RegEx

Подробности RegEx:

  • (!!|\$\$) Совпадение !! или $$ и захват в группе # 1
  • ([\w-]+) Совпадение 1+ слов или дефисных символов и захват в группе # 2
  • \1: Убедитесь, что строка заканчивается теми же начальными разделителями, что и в группе № 1
  • Замена равна <$2> для переноса строки в группе № 2 в < и >

код:

const str = 'My pen cost is !!penCost!! manufactured in $$penYear$$ with colors !!penColor1!! and $$penColor1$$';

const res = str.replace(/(!!|\$\$)([\w-]+)\1/g, '<$2>');

console.log(res);
//=> My pen cost is <penCost> manufactured in <penYear> with colors <penColor1> and <penColor1>
1 голос
/ 18 марта 2020

Вы можете попробовать это:

// Input string - 
const str = 'My pen cost is !!penCost!! manufactured in $$penYear$$ with colors !!penColor1!! and $$penColor1$$'
const result = str.replace(/[!$]{2}(\S+)[!$]{2}/g,"<$1>")
console.log(result)

// Processed result
// My pen cost is <penCost> manufactured in <penYear> with colors <penColor1> and <penColor1>
1 голос
/ 18 марта 2020

код

[!,$]{2}[A-Za-z0-9]+[!,$]{2}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...