匹配字符串的正则表达式是什么,除了其中有 $ 美元符号?

What's the regex to match a string except it has a $ dollar sign in it?

所以基本上,我有这样的文字:

secret(mapOf("path" to "config/info"))
secret(mapOf("path" to "config/data/${rootProject.name}"))
prefix(mapOf("path" to "config/${rootProject.name}", "format" to "${rootProject.name.replace('-', '_')}"))

我想匹配像 config/info 这样的路径,而不是匹配包含变量(其中有美元符号)的路径。我想出了这个 ((?:'|\")config/.+(?:'|\")) 但它也与其他人相匹配。 如何排除带有美元符号的字符串?

你要找的(如果我完全理解你的问题)是这个:

(['\"]config/[^$]+['\"])

解释:

  • 我使用 ['"] 而不是 (?:'|\") 我相信它会让你的正则表达式 将来可读且易于理解。
  • 另外,使用 [^$]+ 而不是 .+ 是解决问题的关键,.+ 将匹配任何内容,但是 [^$]+ 将匹配任何内容,只要它不是 $.