RegExp Тот же Аргумент - PullRequest
       5

RegExp Тот же Аргумент

1 голос
/ 27 сентября 2019

Я пытаюсь создать шаблон RegExp.Текст соли такой:

Lorem --ipsum-- dolor !!ipsum!! sit amet

Я хочу соответствовать --ipsum-- dolor !!ipsum!!, но не знаю, что придет на место ipsum.Я имею в виду, что текст может быть таким:

Lorem --asdasd-- dolor !!asdasd!! sit amet

Я могу сопоставить эти два текста с /--.*?--.*?!!.*?!!/g.Да, я знаю это.

Но я хочу, чтобы это совпадало, когда два аргумента совпадают.Например, шаблон регулярного выражения не должен совпадать ни с чем из этого текста:

Lorem --ipsum-- dolor !!asdasd!! sit amet
Lorem --qweqwe-- dolor !!asdasd!! sit amet
Lorem --qweqwe-- dolor !!ipsum!! sit amet

Как мне этого добиться?

Ответы [ 2 ]

2 голосов
/ 27 сентября 2019

Вы можете использовать это регулярное выражение с группой захвата и обратной ссылкой:

/--([^-]+)--\s+\S+\s+!!\1!!/

RegEx Demo

Если dolor является статической строкой, используйтеэто регулярное выражение:

/--([^-]+)--\s+dolor\s+!!\1!!/

Подробности RegEx:

  • --: совпадение с 2 дефисами
  • ([^-]+): сопоставление и захват1+ любого символа, который не является дефисом
  • --: соответствует 2 дефисам
  • \s+: соответствует 1+ пробельных символов
  • \S+: соответствует 1+ непробельные символы
  • \s+: сопоставить 1+ пробельные символы
  • !!: сопоставить 2 восклицательных знака
  • \1: сопоставить тот же текст, что и группа № 1т.е. обратная ссылка на группу захвата # 1
  • !!: совпадения с восклицаниями 2
0 голосов
/ 27 сентября 2019

Вы можете использовать обратную ссылку, где шаблон соответствует подгруппе, захваченной ранее:

/--(.*?)--.*?!!\1!!/

Здесь \1 означает «соответствовать тому, что было захвачено в первой группе захвата».Скобки вокруг первого .*? делают его группой захвата.Для общего образования, если у вас было несколько захваченных групп, вы можете использовать \ 2, \ 3 и т. Д. Для сопоставления с другими группами, кроме первой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...