Как отфильтровать результат предыдущей группы регулярных выражений, сохранив исходные результаты группы - PullRequest
1 голос
/ 12 июля 2019

Используя JavaScript Regex , мне нужно на основе строки ниже:

word1 w'or""d2 word3
"word4"word5
word6

Получить этот результат:

word1
word2
word3
word4word5
word6

Я пробовал это:

\S+/gm

https://regex101.com/r/nsIA2Y/2

Что правильно группирует слова по пробелам, однако я не смог найти способ удалить "и'символы, объединяющие сгруппированные слова, как в примере. Пробовал несколько способов с группировками, но мои знания ограничены.

Пожалуйста, объясните также решение.

Ответы [ 3 ]

2 голосов
/ 12 июля 2019

Вы можете опубликовать обработанный массив, вызвав .replace:

const str = `word1 w'or""d2 word3
"word4"word5
word6`
var arr = str.match(/\S+/g).map(s => s.replace(/['"]+/g, ''))

console.log(arr)
//=> ["word1", "word2", "word3", "word4word5", "word6"]

.map() метод создаст новый массив с результатами вызова предоставленной функции (* в нашем случае .replace()) для каждого элемента, который мы получили из .match()функция.

1 голос
/ 12 июля 2019

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

const regex = /["']+/gm;
const str = `word1 f'dfretretr""ret word2 word3

"word4"word5
word6 word7
`;
const subst = ``;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log(result);

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

1 голос
/ 12 июля 2019

Вы можете использовать это регулярное выражение /[^\w\s]/, чтобы сделать это./[^\w\s]/ вычислит все символы, которые не являются ни словом, ни пробелом, а затем удалит их с помощью replace().

Демо:

var a = `word1 w'or""d2 word3`;
var b = `"word4"word5`;
var c = `word6`;

console.log(a.replace(/[^\w\s]/g, '').replace(/\s/g, '\n'));
console.log(b.replace(/[^\w\s]/g, '').replace(/\s/g, '\n'));
console.log(c.replace(/[^\w\s]/g, '').replace(/\s/g, '\n'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...