Regex только для первого появления?

Допустим, у меня есть следующая строка:

это тест для тестирования. это всего лишь тест. Конец.

и я хочу выбрать this is a test и this is only a test . Что мне нужно делать в мире?

Следующее Regex, которое я пробовал, дает результат:

this(.*)test (я также хотел захватить то, что было между ним)

this is a test for the sake of testing. this is only a test this is a test for the sake of testing. this is only a test

Кажется, что это, наверное, что-то легкое, я забываю.

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

this(.*?)test

? модификатор заставит его захватить как можно меньше символов в матче.

Andy E и Ipsquiggle имеют правильную идею, но я хочу указать, что вы можете добавить утверждение о границе слова, то есть вы не хотите иметь дело со словами, которые имеют «это» или «тест» в них – только слова сами по себе. В Perl и аналогичном, что сделано с маркером «\ b».

Как бы то ни было, this(.*?)test будет соответствовать «thistles are the great», чего вы, вероятно, не хотите.

Образец, который вы хотите, выглядит примерно так: \bthis\b(.*?)\btest\b

* – жадный квантификатор. Это означает, что он соответствует как можно больше, то есть то, что вы видите. В зависимости от конкретной языковой поддержки для регулярного выражения вам нужно будет найти нежирный квантификатор. Обычно это завершающий вопросительный знак, например: *? , Это означает, что он перестанет потреблять буквы, как только остальное регулярное выражение может быть удовлетворено.

Здесь есть хорошее объяснение жадности.

Для меня просто удалите / g.

См. https://regex101.com/r/EaIykZ/1

  • Регулярное выражение для соответствия внешним скобкам
  • Regex, каждый символ без буквенно-цифровых символов, кроме пробела или двоеточия
  • Регулярное выражение для соответствия действительным датам
  • Сделать регистр с регулярным выражением нечувствительным в ASP.NET RegularExpressionValidator
  • regex для zip-кода
  • Объединить Regexp?
  • Регулярное выражение для соответствия формату времени HH: MM
  • Поиск UUID в тексте с регулярным выражением
  • Regex найти повторяющиеся числа
  • Регулярное выражение для пар синтаксического анализа имени
  • Как (* SKIP) или (* F) работают над регулярным выражением?
  • Давайте будем гением компьютера.