Ответ 1
Как и комментарии, чтение о регулярных выражениях будет наиболее выгодным для вас (в конечном итоге). Нарушение этого конкретного регулярного выражения таково:
-
\B
говорит, что он смотрит только в пределах границы слова (это означает, что он не может быть частью другого типа слова - он не может бытьb123412b123
, а только принимать то, что он находит, если он стоит один -123456
,a 123456 w
- Затем lookahead
(?=
сообщает ему, чтобы найти все, что находится в группе (пока оно не достигнет соответствующей закрывающей скобки) и только вернется, если оно будет найдено в целом, но также убедитесь, что замена выполняется в обратном порядке, потому что он смотрит далеко вперед по отношению к концу строки. -
?:
указывает, что он ищет следующее совпадение, но не создает обратную ссылку (термин в регулярных выражениях) -
\d{3}
ищет 3 цифры подряд. - Затем
+
после этого отмечает, что 3 цифры (завернутые в круглые скобки, чтобы убедиться, что правило рассматривается как один блок, например, -(\d{3})+
) шаблон может повторить (3 цифры, 6, 9 и т.д.). - Последний
(?!\d)
ищет еще одну цифру, но исключая ее, убедившись, что цифры находятся в группах по 3 и не сопровождаются цифрами, которые не входят в группы из 3.
Таким образом, в основном он ищет 1 или более групп из 3 цифр, сообщая RegEx не, чтобы вернуть соответствующие цифры (потому что они игнорируются с помощью ?:
), поэтому возвращает только часть сопоставьте это не ничего - он возвращает \B
, и то, что заменяется. Так эффективно он заменяет только полные группы из 3, начиная с конца строки, заставляя его превращать 3333333
в 3,333,333
.