регулярное выражение - сопоставить часть текста, заданного начала и конца части в Javascript

1

Мне нужно обрезать очень длинную строку, которая может меняться во времени. Поскольку он html, я могу использовать имя тегов и атрибутов, чтобы разрезать его независимо от содержимого. К сожалению, я не могу найти способ написать регулярное выражение. В следующем примере:

Это (случайные символы) пример (случайные символы)

Как я могу сопоставить (случайные символы) и "Это", используя остальное, что всегда одно и то же? Я пробовал что-то вроде следующих:

^(This is)((.|\s)*an)$
This is^(?!.*(an))

но все, кажется, терпит неудачу. Я думаю, что часть "любой символ или пространство в промежутке" делает поиск подходящим до конца строки, и я пропускаю "часть", но я не могу понять, как добавить к этому исключение.

  • 0
    Вы ищите это This is .*? an example .* ?
  • 0
    Может ли это \bThis is\b.+?(?=\ban\b) быть полезным?
Показать ещё 4 комментария
Теги:

2 ответа

0

"Заглянуть за" было бы хорошо для этого, но, к сожалению, JS не поддерживает его. Однако вы можете использовать группы RegExp и группы захвата, чтобы получить желаемый результат.

let matchedGroups = new RegExp(/^This is (.+) an example (.+).$/,'g')

matchGroups.exec('This is (random characters) an example (random characters).')

Это возвращает массив:

0:"This is (random characters) an example (random characters)."
1:"(random characters)" 
2:"(random characters)"

Как вы можете видеть, это немного неуклюже, но вы получите две строки, которые вы можете использовать.

  • 0
    Он также хочет включить часть «Это» в группу (насколько я понимаю). Вы должны включить его в первые скобки, чтобы достичь этого.
  • 0
    О, да, @FinnTheHuman, ты прав. RegExp должен быть таким: let matchedGroups = new RegExp(/^(This is .+) an example (.+).$/,'g')
Показать ещё 1 комментарий
0

Я не знаю javascript, но я буду предполагать, что следующие функции, которые я напишу в некотором свободном C-подобном коде, существуют в той или иной форме:

string input = "This is (random characters) an example (random characters)";

string pattern = "(^This is .*) an example (.*$)";
RegexMatch match = Regex.Match( str, pattern );

string group0 = match.GetGroup(0);//this should contain the whole input
string group1 = match.GetGroup(1);//this should get the first part: This is (random characters)
string group2 = match.GetGroup(2);//this should get the second part: (random characters) at the end of the input string

Примечание. Обычно в регулярных выражениях круглые скобки создают группы захвата.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню