Как использовать квантификаторы регулярных выражений * и + для настраиваемого правила 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]*,'
Если кто-нибудь знает, как заставить работать квантификаторы .
Мне все еще интересно знать!