Я увидел здесь вопрос SO, который использует Java Matcher
и Pattern
, пытаясь выделить текст, похожий на то, как он выделяет Regex101. Его спецификация заключалась в том, чтобы выделить в JTextArea для любой литеральной строки, которой не предшествует буквальный символ «#». Я собирался предложить создать свой собственный Matcher
, а затем OP удалил свой вопрос :(Regex для захвата «WORD», кроме как после «#»
Это был фон, теперь вот мой вопрос. Как я могу использовать регулярное выражение, чтобы захватить литеральную строку, если это не после (но нет необходимости смежно) конкретная строка/символ в строке?
Например, если я хотел, чтобы выбрать строку «тестер» из следующего
тестер, #tester
тест тестер # тест тестер
тестер
Я надеюсь, что мое регулярное выражение будет выбрать
тестера, #tester
теста тестера # тест тестер
тестер
но не последний «тестер».
Использование Regex101, ближайший я получил /(?=tester)(?<!#)tester/g
, но это выбирает последнюю строку «тестера», так как я не могу сделать «динамический»? (отличная от нуля), оглядываясь назад, насколько я могу судить.
EDIT:
Мой вопрос был не Java конкретно, в противном случае я бы, поставил метку Java. Если Regex101 не так, я не могу использовать Limiting Repetition, потому что «Lookbehinds должны быть нулевой ширины, поэтому квантификаторы не допускаются».
Я тестировал регулярное выражение WiktorStribiżew на Java, и он отлично работает. Видя, что это комментарий, а не ответ, все, что я могу сделать, это +1, Java String - (?<!#.{0,1000})\\btester\\b
. Я протестировал его против следующего Java String tester, #tester\ntest tester # test testern\tester
Вопрос о том, что не существует полностью определенного способа обработки регулярных выражений на всех языках? Или есть Regex101 просто плохой инструмент тестирования (я использовал свой механизм по умолчанию, PHP)?
В будущем я буду использовать RegexStorm или RegexHero.
https://regex101.com/r/aT3qN3/6 – Shafizadeh
Тогда он должен быть только один символ, который является уникальным в этой строке , –
Почему вы не можете просто проверить свой желаемый персонаж?/(? = tester) #?/g –