c++ - 正则表达式设置字符串文字的最大长度
问题描述
我想弄清楚如何在正则表达式中设置最大长度。我的目标是将字符串文字的正则表达式设置为最大长度 80。
如果您需要,这是我的表达:
["]([^"\\]|\\(.|\n))*["]|[']([^'\\]|\\(.|\n))*[']
我尝试在表达式的前面和结尾都添加 {0,80},但要么所有字符串都分解成更小的标识符,要么到目前为止都没有。
在此先感谢您的帮助!
编辑:
这是对我要完成的工作的更好解释。鉴于“此字符串长度超过 80 个字符”,当通过 flex 运行而不是像这样列出时:
行:1,词位:|此字符串长度超过 80 个字符|,长度:81,标记 4003
我需要像这样分解它:
行:1,词位:|THIS|,长度:1,标记 6000
行:1,词位:|STRING|,长度:1,标记 6000
行:1,词位:|IS|,长度:1,标记 6000
行:1,词位:|OVER|,长度:1,标记 6000
行:1,词位:|80|,长度:1,标记 6000
行:1,词位:|CHARACTERS|,长度:1,标记 6000
行:1,词位:|LONG|,长度:1,标记 6000
虽然字符串“此字符串不超过 80 个字符长”将显示为:
行:1,词位:|此字符串长度不超过 80 个字符|,长度:50,标记:4003
解决方案
如果您在内部使用正则表达式flex
,并且需要监视其长度,最简单的方法是查看保存在yylex
(或类似)中的匹配字符串:
["]([^"\\]|\\(.|\n))*["]|[']([^'\\]|\\(.|\n))*['] { if (strlen(yylex) > 82) { ... } }
我曾经82
占两个双引号字符'"'
。如果这不是您的设置,请在评论中告诉我,我将删除我的答案(无需投反对票:))
推荐阅读
- c++ - 用细胞表示迷宫
- regex - 匹配 0 和 1 的正则表达式,其中连续的 1 必须是奇数?
- c - 在汇编中调用 printf() 会导致“浮点异常”
- javascript - 字符串分割图组合的时间复杂度
- javascript - Javascript:过滤多个值的对象数组
- php - 如何在其他 php 文件中使用 conexion 类?
- c++ - C++:通过函数参数传递的值给出不同的结果
- javascript - 如何为tone.js中正在播放的音符添加事件监听器
- vba - 初始化集合对象时出现 ActiveX 错误
- javascript - json2Csv Angular - 添加总计行