Поскольку вы используете группу захвата, я предполагаю, что это строка, которую вы ищете.Вы можете изменить свое выражение на это: ^.{0,6}\\s{1,3}(---+)\\s*
.Я добавил следующее:
- ^ начало строки.
- . {0,6} для соответствия от нуля до шести символов.
Изменение выражения, подобного этому, будет соответствовать тому, что вы ищете, ваше исходное выражение будет совпадать, если оно начинается максимум в позиции 6 , это ваш макс..Разница в том, что все совпадение содержит эти необязательные символы, но первая группа захвата будет содержать только те черты, которые вы ищете.
Я использую следующий код на игровой площадке для проверки нового выражения:
let regexString = "^.{0,6}\\s{1,3}(---+)\\s*"
let regex = try? NSRegularExpression(pattern: regexString)
let string = "Space --- the final frontier --- these are the voyages of the
starship Enterprise. Its continuing mission: to explore strange
new worlds. To seek out new life and new civilizations. To boldly
go where no one has gone before!"
let matches = regex?.matches(in: string, options: [], range: NSRange(location: 0, length: string.count))
if let firstMatch = matches?.first {
print("Whole regex match starts at index: \(firstMatch.range.lowerBound)")
print("Whole match: \(String(string[Range(firstMatch.range, in: string)!]))")
print("Capture group start at index: \(firstMatch.range(at: 1).lowerBound)")
print("Capture group string: \(String(string[Range(firstMatch.range(at: 1), in: string)!]))")
} else {
print("No matches")
}
Выполнение приведенного выше кода показывает следующие результаты:
Все совпадения регулярных выражений начинаются с индекса: 0
Всего совпадений: пробел ---
Начало группы захвата с индекса: 6
Строка группы захвата: ---
Если string
изменяется следующим образом: let string = "The space --- the final frontier --- these are the ...
результат равен:
Нет совпадений
, поскольку \\s{1,3}
начинается с индекса 10 .
Надеюсь, это работает для вас.