Я пытаюсь извлечь путь класса из строки. Формат строки может содержать разные пути к классам
(пример строки: DEBUG(tab)a.b.c.d.classname#
, INFO(tab)a.classname#
)
У меня есть регулярное выражение:
, если в пути несколько точек (?:\w\.\w\.[^#]*)
, который работает нормально, но когда я добавляю |(?:[^\d]\w\.\w{1,9999}[^#]*)
, если есть путь к классу, содержащий одну точку (второй пример выше), он также выбирает вкладку. В основном я хочу сделать регулярное выражение, которое соответствует любому пути класса. Как выбрать путь, если в пути к классу есть только одна точка?
пример полной строки:
2019-01-01 01:01:01.000+0000 [id=1](tab_here)INFO(tab_here)a.package.classname#sometext: somemoretext
, как выглядит регулярное выражение:
(?:\w\.\w\.[^#]*)|(?:[^\d]\w\.\w{1,9999}[^#]*)
ОБНОВЛЕНИЕ
желаемый результат - это совпадение пути к классу без tab
, когда он содержит только один dot
: результат, который у меня есть сtab ..
UPDATE # 2:
Все ответы великолепны, но мне пришлось модифицировать Vincents один, чтобы достичь того, что я хотел. Конечное регулярное выражение:
(\w+(?:\.\w+)+)(?=#)
, которое не нужно ни впереди, ни сзади. Результат совпадает с выводом Винсента.
Спасибо всем, кто участвовал!