Мне нужно написать RegEx для использования в моем javascript, чтобы я мог сопоставить набор из трех последовательных слов. Это три слова будут переменными, как «раньше», «ошибка», «после». Дело в том, что «ошибка» всегда существует, но поскольку это может быть якорь при начале или конце предложения, «до» или «после» может отсутствовать. Таким образом, чтобы проиллюстрировать:RegEX в Javascript для соответствия набору слов
Если before= "this" after = "that" error="fail"
В предложении: test = "this fail that, but fail is not part of the result but can be in the case it is like this, fail"
Результат будет:
this fail that
this fail
только 2 из них правильно вернуться, поскольку они имеют "ошибка" слово и по крайней мере одно из двух боковых слов. Они могут быть символами между словом, поскольку я не получаю знаки препинания.
Я пытаюсь узнать RegEx, но до сих пор я только смог извлечь слово об ошибке что-то вроде: new RegExp("\\b" + motErreur + "\\b", "gi");
И в попытке я сделал за три слова не кажется правильно работать:
pattern = @"(?:^\W*|(?<"+before+">\w+)\W+)" + error + @"(?:\W+(?<"+after+">\w+)|\W*$)";
Как шаблон, взятый из примера в C# в моем коде и нуждающийся в нем в Javascript, я не знаю, не то ли это то, что заставляет его потерпеть неудачу.
Как я могу сделать это с помощью простого RegEx? цель заключается в замене части предложения предложения (у меня уже есть функция, написанная для этого, я только с этим RegEx).
Вы используете именованные группы захвата, они не поддерживаются JS. Вы ищете ['(?:^\ W * | (\ w +) \ W +) fail (?: \ W + (\ w +) \ \ W * $)'] (https://regex101.com/r/ pC3pL5/1), правильно? –
@ WiktorStribiżew такой позор. Но это объясняет, почему это не сработало. В случае вашего RegEx, где место для до или после? Потому что без них я получу какой-то матч, которого я не хочу. – Slayner