Expresión regular: captura de todos los grupos repetitivos

Tengo cadenas como a continuación:

@property.one@some text here@property.two@another optional text here etc 

que contiene @.+?@ strings adentro.

Me gustaría capturar todas estas “variables” en grupos a través de una coincidencia de expresiones regulares, pero parece que no es posible, ya que la expresión regular devuelve solo el último grupo capturado mientras se repite.

Tienes razón; la mayoría de los sabores de expresiones regulares, incluido Java, no permiten el acceso a coincidencias individuales de un grupo de captura repetido. (Perl 6 y .NET permiten esto, para el registro, pero eso no te ayuda).

¿Qué más puedes hacer?

 Pattern regex = Pattern.compile("@[^@]+@"); Matcher regexMatcher = regex.matcher(subjectString); while (regexMatcher.find()) { // matched text: regexMatcher.group() // match start: regexMatcher.start() // match end: regexMatcher.end() } 

Eso capturará @property.one@ , @property.two@ etc. uno por uno.

Si sabes que el separador será @ , ¿por qué no usar el método de división ( string.split('@') )?