Простите за ужасное название - не знаете, как лучше всего его поместить.Сопоставьте строку в строке, содержащей определенную строку в Javascript
примечание: Am пытается сделать это в Javascript
Я хочу, чтобы соответствовать определенному тексту в 2-х разных адресах, которые имеют различную длину и структуру. Один начинается с video
, а другой - с audio
. Соответствие должно быть заменено по-разному в зависимости от начала строки.
Я не могу решить, как сделать dotall (. *) Совпадение в положительном lookbehind?
Например, приведенные ниже строки должны быть согласованы на 2 отдельных RegEx-х лет, один указав, что video
и другой audio
должен быть перед %7bmatch%7d
Они должны только матча %7bmatch%7d
для данной строки начинаются.
video://[email protected]#[email protected]/%7bmatch%7d/[email protected]#[email protected]
audio://[email protected]#[email protected]/%7bmatch%7d/[email protected]#[email protected]
Я пробовал: /(?<=video)(?<=.*)%7bmatch%7d/g
http://regexr.com?373gh среди других вариантов и не совсем, кажется, только соответствовать %7bmatch%7d
или любой другой матч, не получая все так video
в примере. Попал в тупик, по-настоящему оценил бы толчок в правильном направлении.
EDIT: Ответ специфичен для Javascript:
// Random collection of string(s)
var inputString = "video://[email protected]/asd/ft#[email protected]/%7bmatch%7d/[email protected]#[email protected]://[email protected]#Rsinbet/asdfas/[email protected]/%7bmatch%7d/[email protected]#[email protected]://[email protected]#Rsinbetweasdf/asd/f/[email protected]/%7bmatch%7d/[email protected]#[email protected]://[email protected]#[email protected]/%7bmatch%7d/[email protected]#[email protected]://[email protected]#[email protected]/%7bmatch%7d/[email protected]#[email protected]://[email protected]///asdfasdfct#[email protected]/%7bmatch%7d/[email protected]#[email protected]";
// Regex to match after every `video` occurence
regexVideo = new RegExp(/(video.*?)%7bmatch%7d/g);
// Regex to match after every `audio` occurence
regexAudio = new RegExp(/(audio.*?)%7bmatch%7d/g);
// strings to replace the matches
var replaceStringVideo = "<span class='woot'>W00tW00tVideoW00t</span>";
var replaceStringAudio = "<span class='woot'>W00tW00tVAudioW00t</span>";
// replace both audio and video with respective replace values NOTE: the dollar token needed concatenated before the replaceString.
inputString.replace(regexVideo, "$1" + replaceStringVideo).replace(regexAudio, "$1" + replaceStringAudio);
// This yields an inputString value of
"video://[email protected]/asd/ft#[email protected]/<span class='woot'>W00tW00tVideoW00t</span>/[email protected]#[email protected]://[email protected]#Rsinbet/asdfas/[email protected]/<span class='woot'>W00tW00tVAudioW00t</span>/[email protected]#[email protected]://[email protected]#Rsinbetweasdf/asd/f/[email protected]/<span class='woot'>W00tW00tVideoW00t</span>/[email protected]#[email protected]://[email protected]#[email protected]/<span class='woot'>W00tW00tVAudioW00t</span>/[email protected]#[email protected]://[email protected]#[email protected]/<span class='woot'>W00tW00tVideoW00t</span>/[email protected]#[email protected]://[email protected]///asdfasdfct#[email protected]/<span class='woot'>W00tW00tVAudioW00t</span>/[email protected]#[email protected]"
Какого языка или инструмент вы используете? –
Будет использовать javascript, если я могу заставить его работать на regexr.com –
Его не работает в regexr, потому что он, похоже, не поддерживает переменную длину lookbehinds. Если вы измените. * На. {X}, где x - точное число символов, которое оно будет соответствовать. – OGHaza