如何正则匹配字符串开头的首个单词或左括号前的起始单词
字符串开头关键词匹配规则实现
已知场景与预期结果
现有两类待匹配字符串及对应预期输出如下:
- 输入:
"find().nodes() as n3",预期匹配结果:find - 输入:
"with n1,n2,n3",预期匹配结果:with
匹配规则说明
需求为匹配两类目标:一是字符串开头位置的第一个单词,二是字符串开头处左括号(前的第一个单词,使用正则表达式即可实现,规则如下:
^[a-zA-Z]\w*
规则逻辑解释
^:锚定字符串起始位置,保证匹配仅从字符串最开头开始,不会命中字符串中段的内容[a-zA-Z]:匹配单词首字母,适配常规查询语句关键字、标识符首字符为字母的场景,若需要支持下划线开头可替换为\w\w*:匹配后续连续的单词字符(包含字母、数字、下划线),一旦碰到非单词字符(包括左括号(、空格、逗号等)就自动终止匹配
效果验证
- 针对
find().nodes() as n3:从开头连续匹配到find后,下一个字符是((非单词字符),匹配终止,返回结果find,符合预期 - 针对
with n1,n2,n3:从开头连续匹配到with后,下一个字符是空格(非单词字符),匹配终止,返回结果with,符合预期
内容的提问来源于stack exchange,提问作者flylion_wang
相关产品推荐
相关产品推荐

