Как я могу соответствовать на, но исключить regex шаблон?

У меня есть этот URL:

http://example.com/createSend/step4_1.aspx?cID=876XYZ964D293CF&snap=true&jlkj=kjhkjh&

И этот regex шаблон:

cID=[^&]*

Который приводит к этому результату:

cID=87B6XYZ964D293CF

Как я УДАЛЯЮ "cID ="?

Спасибо

20
задан Tim Pietzcker 9 June 2010 в 06:12
поделиться

5 ответов

В JavaScript вы захотите использовать группу захвата (поместите часть, которую вы хотите захватить, внутрь ()) в вашем регулярном выражении

var url = 'http://example.com/createSend/step4_1.aspx?cID=876XYZ964D293CF&snap=true&jlkj=kjhkjh&';

var match = url.match(/cID=([^&]*)/);
// ["cID=876XYZ964D293CF", "876XYZ964D293CF"]

// match[0] is the whole pattern
// match[1] is the first capture group - ([^&]*)
// match will be 'false' if the match failed entirely
4
ответ дан 29 November 2019 в 23:33
поделиться

Вы можете использовать поиск назад (не в Javascript):

(?<=cID=)[^&]*

Или вы можете использовать группировку и захватить первую группу:

cID=([^&]*)
24
ответ дан 29 November 2019 в 23:33
поделиться

Используя группы захвата:

cID=([^&]*)

, а затем получить $ 1:

87B6XYZ964D293CF
4
ответ дан 29 November 2019 в 23:33
поделиться

Вот код Javascript:

 var str = "http://example.com/createSend/step4_1.aspx?cID=876XYZ964D293CF&snap=true&jlkj=kjhkjh&";
    var myReg = new RegExp("cID=([^&]*)", "i");
    var myMatch = myReg.exec(str);
    alert(myMatch[1]);
1
ответ дан 29 November 2019 в 23:33
поделиться

Вообще говоря, для выполнения чего-то подобного у вас есть как минимум 3 варианта:

  • Используйте поисковые запросы, чтобы вы могли точно сопоставить то, что вы хотите захватить
    • К сожалению, в Javascript нет ретроспективного просмотра.
  • Используйте группу захвата для захвата определенных строк
    • Почти повсеместно поддерживается во всех вариантах
  • Если ничего не помогает, вы всегда можете просто взять подстроку совпадения
    • Хорошо работает, если длина префикса / суффикса для обрезки является известной константой.

Ссылки


Примеры

Данная тестовая строка:

i have 35 dogs, 16 cats and 10 elephants

Это совпадения некоторых шаблонов регулярных выражений:

Вы также можете выполнять несколько захватов, например:

  • (\ d +) (cats | dogs) дает 2 результата совпадения ( см. На rubular.com )
    • Результат 1: 35 собак
      • Группа 1 отловила 35
      • Группа 2 отловила собак
    • Результат 2: 16 кошек
      • Группа 1 отловила ] 16
      • Группа 2 захватывает котов
12
ответ дан 29 November 2019 в 23:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: