Как выбрать только определенные слова? - PullRequest
1 голос
/ 25 октября 2019

Со строкой ant apple bat Я хочу выбрать только ant и bat без выбора яблока или пробела.

Я пробовал несколько разных вещей, как;

\bant\b\bbat\b

или

ant\bbbat\b

или

(\b(ant)\b.*\b(bat)\b)

или

ant(?:.*)bat

или

ant(?:\sapple\s)bat

или

(ant)*[^a-z\s]*(bat)

Я знаю, что приведенные выше примеры глупы, но я просто бездельничаю на тестере регулярных выражений, пытаясь выяснить это. Я раньше делал регулярные выражения, и я понял это, но не могу вспомнить, как я это сделал. Кажется довольно просто, просто выбрать "муравей" и "летучая мышь", но, очевидно, нет. Есть ли какой-нибудь способ отменить выбор или удалить часть матча?

Ответы [ 3 ]

2 голосов
/ 25 октября 2019

Используйте группу без захвата с чередованием:

(?:\bant\b|\bbat\b)
0 голосов
/ 25 октября 2019

Если вам просто нужны два разных слова, они выглядят так:

\b(ant|bat)\b

\b - это граница слова. Круглая скобка - группа. Канал | - это оператор или

  • граница слова
  • , за которой следует либо слово ant, либо слово bat
  • , оканчивающееся границей слова

Aграница слова - это, вероятно, то, что вы ожидаете, пробел, конец строки, пунктуация

0 голосов
/ 25 октября 2019

Я думаю, вы поняли это неправильно. Одно совпадение с регулярным выражением будет соответствовать только непрерывному тексту. Простое регулярное выражение типа ant|bat с муравьями или летучими мышами. Но если вы хотите сопоставить муравей и летучую мышь, игнорирование текста между ними не будет работать.

При использовании регулярных выражений с любыми языками программирования, такими как python или java, вы должны выполнить цикл по нескольким совпадениям и выполнить соответствующее действие.

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