Мне кажется, что в этом регулярном выражении много ненужного
- Что-то вроде
(?:\$?)
такое же, как \$?
- Нет необходимости«защитить» символы «.», «_», «,» или «+» в группе с квадратными скобками
Итак, что вы действительно могли бы получить:
/(?:^|\s|[.(+\-,])\$?\$((?:[0-9]+(?=[a-z])|(?![0-9.:_\-]))(?:[a-z0-9]|[_.\-:](?![._\-:]))*[a-z0-9]+)/i
Что касается помещения его в строку, то все, о чем вам действительно нужно беспокоиться, это обратные слеши.Те должны быть удвоены ("\").Внешние символы "/" будут удалены, а завершающий модификатор "i" будет передан в метод Pattern.compile()
.