Использование строки соответствия регулярному выражению, начинающейся с точки, исключая двойные - PullRequest
2 голосов
/ 22 марта 2020

Я ищу регулярное выражение для разбиения следующей строки:

.name "Collector Show Stress" .target "target" .curio_result_type "negative" .chance 80% .stress 10.0 .on_hit true .on_miss false.queue true

на: .name "Collector Show Stress" .target "target" .curio_result_type "negative" .chance 80% .stress 10.0 .on_hit true .on_miss false .queue true

Я использовал следующее регулярное выражение для сопоставления, но он также разбивает двойное число: \.[^.]+

Результат, который я получаю: .name "Collector Show Stress" .target "target" .curio_result_type "negative" .chance 80% .stress 10 .0 .on_hit true .on_miss false .queue true

Я в основном новичок ie, когда дело доходит до регулярных выражений, поэтому любая помощь приветствуется.

Я использую регулярное выражение в C# консольном приложении.

Заранее спасибо!

1 Ответ

2 голосов
/ 22 марта 2020

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

\.[^.\s]+ (?:"[^"]+"|true|false|[0-9]+(?:\.[0-9]+)?%?)

Объяснение

  • .[^.\s]+ Match. и 1+ вхождений любого символа, кроме символа точки или пробела
  • (?: Группа без захвата
    • "[^"]+" Совпадение от двойной кавычки от открытия до закрытия "..."
    • | Или
    • true Совпадение буквально
    • | Или
    • false Совпадение буквально
    • | Или
    • [0-9]+(?:\.[0-9]+)? Совпадение 1+ цифр с необязательной десятичной частью
    • %? Совпадение необязательного знака процента
  • ) Закрыть группу

Regex demo

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

\.[^.]+ (?:[^.\s]|\.(?=[0-9]))+

Объяснение

  • .[^.]+ Совпадение с точкой, за которой 1+ раз встречается любой символ, кроме точки
  • (?: Группа без захвата
    • [^.\s] Совпадение с любым символом, кроме символа с точками или пробелами
    • | Или
    • \.(?=[0-9]) Совпадение с точкой, обозначающей di git непосредственно вправо
  • )+ Закрыть группу d повторение 1+ раз

Regex demo

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