REGEX - найти строку с одинаковым совпадением? [дубликат]

avatar
cryptohustla
8 апреля 2018 в 08:53
72
3
-1

Я пытаюсь сопоставить строку "пункт меню", но после нее стоит цифра.

<li id="menu-item-578" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-578">

я могу использовать это регулярное выражение

menu-item-[0-9]*

однако он соответствует всей строке пункта меню, я хочу только соответствовать "menu-item-578", но не id="menu-item-578"enter image description here

как я могу это сделать?

спасибо

Источник
revo
8 апреля 2018 в 08:58
0

Отметьте свой вопрос языком.

revo
8 апреля 2018 в 10:11
0

@WiktorStribiżew Отмеченный вопрос точно не дублирует этот.

Ответы (3)

avatar
pedram shabani
8 апреля 2018 в 09:15
0

Попробуйте, тоже работает:

(\s)(menu-item-)\d+

https://regex101.com/

  • \s Любой пробел
cryptohustla
8 апреля 2018 в 09:45
0

тоже работает, но у меня много пунктов меню с цифрами не только 578

pedram shabani
8 апреля 2018 в 10:13
0

обновил ответ

cryptohustla
8 апреля 2018 в 10:16
1

идеально! :Д спасибо

revo
8 апреля 2018 в 10:20
0

Что там делает \.??

cryptohustla
8 апреля 2018 в 11:14
0

он хорошо работает с \.? ржу не могу

avatar
revo
8 апреля 2018 в 09:04
1

Вам следует избегать использования menu-item-[0-9]* не потому, что он излишне соответствует одной и той же ожидаемой подстроке, а по той причине, что он выходит за рамки этого, как и сопоставление menu-item- в menu-item-one.

Помимо замены квантификатора на +, вы должны посмотреть, не является ли предшествующий символ символом, отличным от пробела:

(?<!\S)menu-item-[0-9]+(?=["' ])

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

[ ]menu-item-[0-9]+

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

[ ]menu-item-[0-9]+["' ]
avatar
jjimenezg93
8 апреля 2018 в 08:56
0

Используйте пробел перед этим:

\ menu-item-[0-9]*

Первое вхождение имеет " прямо перед, а второе имеет пробел.

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

cryptohustla
8 апреля 2018 в 09:44
0

он выделяет все пункты меню, кроме того, что находится в id, лол, может быть, более строго просто выделить тот, у которого есть цифра?