Я пытаюсь изменить следующее регулярное выражение (в javascript) из плагина glossarizer, чтобы сделать его менее мягким.Regex вытащить многословные совпадения из списка терминов
var regex = new RegExp("(^s*|[^!])" + this.clean(term) + "\\s*|\\,$", "i");
Он пытается получить определение термина в массиве терминов и определений JSON.
[{term: "black cat", definition: "a black cat"},
{term: "cat", definition: "meow"}]
Прямо сейчас это соответствие «черная кошка», когда я прохожу в «кошки», но я не хочу, чтобы это. Я хочу, чтобы соответствовать то, что начинается в начале строки или после запятой и */s
и заканчивается либо запятой, либо в конце строки, так что несколько определений могут быть переданы в.
*Match for cat:
'cat'
' Cat '
'cat, feline'
'feline, cat , cheetah'
*Not a match for cat:
'black cat'
'Catapult'
'!cat'
I попробовал поставить new RegExp("(^|^s*|[^!])" + this.clean(term) + "\\s*$|\\s*,", "i")
(добавив трубы, чтобы он начинался с строки ИЛИ запятой и пробелом, и поэтому в конце это было бы пробелом, за которым следует запятая или конец строки, но она не имела желаемого эффекта (с использованием regex101 .com, но в основном путают)
Укажите примеры ввода и ожидаемые совпадения. – anubhava
Почему «черная кошка» не соответствует? Каковы правила? –
Являются ли скобки частью строки или это иллюстрирует ваш вопрос? Какие правила вы хотите использовать на простом английском языке? Каков вклад ожидаемого вывода, который вы опубликовали? – sebnukem