Прежде всего, [\d]{1}
эквивалентно \d
.
Что касается вашего вопроса, было бы лучше использовать утверждение нулевой ширины, например, lookbehind/lookahead или границу слова (\b
). В противном случае вы не будете сопоставлять последовательные одиночные цифры, потому что ведущее пространство второй цифры будет сопоставляться как конечное пространство первой цифры (и совпадающие совпадения не будут найдены).
Вот как я это пишу:
(?<!\S)\d(?!\S)
Это означает, что «соответствует цифре, только если не непробельный символа перед ним, и не непробельным символом после него» ,
Я использовал двойной отрицательный как (?!\S)
вместо (?=\s)
так, чтобы вы также соответствовали отдельным цифрам, которые находятся в начале или конце строки.
Я предпочитаю это более \b\d\b
для примера, потому что это выглядит, как вы действительно только хотите, чтобы соответствовать, когда цифра окружен пробелами и \b\d\b
будет соответствовать 4
и 5
в строке как 192.168.4.5
Чтобы разрешить знаки препинания в конце концов, вы можете использовать следующее:
(?<!\S)\d(?![^\s.,?!])
Добавьте любые дополнительные знаки препинания, которые вы хотите, чтобы после того, как цифры в классе символов (внутри квадратных скобок, но убедитесь, что после того, как го e ^
).
Вы здесь приводятся некоторые особые случаи. Когда номер находится в начале, в конце и когда это только одна цифра в строке. – abc667