匹配字符串的正则表达式是什么,除了其中有 $ 美元符号?
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/[^$]+['\"])
解释:
- 我使用
['"]
而不是 (?:'|\")
我相信它会让你的正则表达式
将来可读且易于理解。
- 另外,使用
[^$]+
而不是 .+
是解决问题的关键,.+
将匹配任何内容,但是 [^$]+
将匹配任何内容,只要它不是 $
.
所以基本上,我有这样的文字:
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/[^$]+['\"])
解释:
- 我使用
['"]
而不是(?:'|\")
我相信它会让你的正则表达式 将来可读且易于理解。 - 另外,使用
[^$]+
而不是.+
是解决问题的关键,.+
将匹配任何内容,但是[^$]+
将匹配任何内容,只要它不是$
.