Как использовать квантификаторы регулярных выражений * и + для настраиваемого правила SwiftLint

Я пытаюсь написать собственное правило для SwiftLint. Следуя указаниям в файле readme, я добавил следующее .swiftlint.yml:

custom_rules:
  multi_clause_guard:
    regex: 'guard .*,'

Тем не менее, это регулярное выражение не соответствует ни одной строке в моем проекте, несмотря на то, что существует множество строк, где оно должно соответствовать, например:

guard let x = Int(s), let y = Int(t) else { return }

Я пробовал различные другие значения для регулярного выражения, и это работает, пока вы не введете квантификатор.

  • 'guard .,' будет соответствовать линии guard a,
  • 'guard ..,' будет соответствовать линии guard _a,
  • 'guard .*,' не будет соответствовать линии guard a,
  • 'guard .+,' не будет соответствовать линии guard a,

Есть ли способ, которым я могу использовать * а также + в пользовательском правиле SwiftLint?

1 ответ

Кажется, что кванторы можно применять к наборам символов, которые вы определяете явно. В этом случае мне было достаточно заменить . с [\h\S] (который включает горизонтальные пробельные символы и любые другие символы, которые не являются пробельными символами).

custom_rules:
  multi_clause_guard:
    regex: 'guard [\h\S]*,'

Если кто-нибудь знает, как заставить работать квантификаторы .Мне все еще интересно знать!

Другие вопросы по тегам