正则表达式匹配所有变量,但排除大写单词
Regex to match all variables, but exclude uppercase words
我是正则表达式初学者,在排除搜索模式时遇到了一些问题。我有一种使用大写单词作为关键字的领域特定语言:我想忽略这些,但我想捕获所有可能的变量名称。
示例变量名称:
- VarWithCapitals
- 变量
- var_with_snake_case
- var_with_{大括号}_大括号
- Var_with_The_{kitchen123}_Sink
一些示例关键字:
- 命令
- 一边做一边结束
- 为了
到目前为止我的正则表达式匹配所有但不排除大写关键字:
\b[a-zA-Z0-9_{}]*\b
如何排除仅包含大写单词但与我的其他变量名称匹配的单词?
您可以使用 negative lookahead 来排除不需要的规则
\b(?![A-Z]+\b)[a-zA-Z0-9_{}]*\b
勾选proof
解释:
(?!...)
negative lookahead,以下文本不得符合以下规则
(?![A-Z]+\b)
如果下面的文字只用大写字母后跟单词边界,则测试失败
我是正则表达式初学者,在排除搜索模式时遇到了一些问题。我有一种使用大写单词作为关键字的领域特定语言:我想忽略这些,但我想捕获所有可能的变量名称。
示例变量名称:
- VarWithCapitals
- 变量
- var_with_snake_case
- var_with_{大括号}_大括号
- Var_with_The_{kitchen123}_Sink
一些示例关键字:
- 命令
- 一边做一边结束
- 为了
到目前为止我的正则表达式匹配所有但不排除大写关键字:
\b[a-zA-Z0-9_{}]*\b
如何排除仅包含大写单词但与我的其他变量名称匹配的单词?
您可以使用 negative lookahead 来排除不需要的规则
\b(?![A-Z]+\b)[a-zA-Z0-9_{}]*\b
勾选proof
解释:
(?!...)
negative lookahead,以下文本不得符合以下规则(?![A-Z]+\b)
如果下面的文字只用大写字母后跟单词边界,则测试失败