regex-lookarounds - 基于字符串的正则表达式贪婪匹配
问题描述
1)我尝试用正则表达式匹配字符串的全部部分。贪心有问题,我想。下面是考虑中的pl/sql的结构
ERRORHANDLER
WHEN TRUE THEN
IF SOMETHING THEN
ELSE
END IF;
WHEN FALSE THEN
END;
以下是我框架匹配的正则表达式^(\s*)ERRORHANDLER((?!FUNCTION).) END[(\s )(\w+)|;]
在哪里 ,
^(\s*)ERRORHANDLER
- 匹配随机空格和静态字符串 ERRORHANDLER,它们始终是模式的开头。
((?!FUNCTION).)*
- 贪婪的负面展望*
END[(\s*)(\w+)|;]
- 匹配 END 以及以分号结尾的可选字符串。
虽然我确信匹配字符串的方法,但这个正则表达式没有正确匹配它。
预期输出:
完全匹配
ERRORHANDLER
WHEN TRUE THEN
IF SOMETHING THEN
ELSE
END IF;
WHEN FALSE THEN
END;
解决方案
由于这里的开头和结尾都是基于单词的,因此需要使用边界,并且合并以下 2 ,
- 开始词和结束词。
- 它们之间用字符和元字符量化。
所以对于这个正则表达式将匹配的问题 \bERRORHANDLER[\w|\W]+END\b;
推荐阅读
- javascript - 如何最好地解析成分列表中的每一项,并根据每个解析结果创建一个新对象?
- db2 - 从 java 程序中读取 MVS DataSet
- css - flexbox 项目的完美圆角边界半径
- python - 具有多个参数的 Python 函数
- javascript - d3js 搜索节点及其子节点
- android - Android WorkManager:是否可以设置任务的最大执行持续时间
- reactjs - npx serve 提供主目录而不是 index.html
- python - 将数据堆叠到具有两个标题的行中,并且第一个标题不合并
- windows - Windows libvirt/QEMU 来宾虚拟机在重新启动后将时区重置为主机时区
- r - 在 R 中将字母映射到数字