Regex: coincide con palabras que no son cadenas

Estoy tratando de distinguir entre palabras y cadenas. Logré que las cadenas funcionen, pero no puedo entender cómo hacer coincidir palabras que no están rodeadas por comillas dobles:

Entonces quiero que coincida:

test 

Pero esto no debe coincidir:

 "test" 

Esto es lo que tengo hasta ahora:

 [^\"][a-zA-Z]*[^\"] 

Todavía obtiene la testing aunque está rodeado de comillas dobles.

 Input: "\"this is a string\" word" Expected Output: word 

¿Alguna sugerencia?

¿Qué tal?

 assert("\"<quoted>\" word".words == listOf("word")) assert("head \"<quoted>\" word".words == listOf("head", "word")) assert("head\"<quoted>\"word".words == listOf("head", "word")) assert("\"<escaped\\\"quoted>\"".words == emptyList()) assert("; punctuations , ".words == listOf("punctuations")) 

 inline val String.words get() = dropStrings().split("[^\\p{Alpha}]+".toRegex()) .filter { it.isNotBlank() } @Suppress("NOTHING_TO_INLINE") inline fun String.dropStrings() = replace("\"(\\[\"]|.*)?\"".toRegex(), " ") 
  • Fusionando varias tags <script> en una en Kotlin
  • Kotlin Regex llamado grupos de apoyo
  • groupValues ​​solo devuelve la última aparición de patrón repetitivo
  • Error en la validation de la expresión regular de la matrícula del automobile