java - 跳过 RegEx 分组
问题描述
我添加了一个带有正则表达式 ""\(.*?\)" 的代码来模式匹配 ( 和 ) 中包含的单词并替换这些值。例如:test_value_(obj_id)_(date_created) 将替换为 obj_id 和date_created。最终字符串将是“test_value_123_10/23/19”(obj_id 值为 123,date_created 为 10/23/19)
但是,如果有任何表达式用户需要 ( and ) 与最终字符串一起成为 value 的一部分。例如:test_value_((obj_id))_(date_created)。正则表达式模式不起作用,它不能识别组 obj_id。所以最终表达式返回为“test_value_((obj_id))_10/23/19”有什么办法可以解决吗?
解决方案
将正则表达式更改为
\([^()]*\)
它将仅匹配最里面的括号表达式。如果您的用户提供的字符串包含不包含要替换的表达式的括号对,您要么必须更严格地描述要替换的数据的模式,要么更改您使用的定界字符。
你可能想从
\([a-zA-Z_]+\)
作为您的模式,它匹配没有数字的带括号的标识符。
推荐阅读
- javascript - 具有二维数组js的矩阵
- javascript - 使用任何此命令 sencha ap watch/run/build 在 sencha cmd 中构建失败,它开始突然发生这里是可用的日志
- python - 如何使用 Django 变量设置 HTML 元素的 id?
- javascript - 发送错误信息的正确方式,但代码仍然运行
- node.js - 如何获取大小取决于 MongoDB 聚合的某些条件
- python - 如何创建自定义 Django 管理员来替换现有的 Django 管理员?
- python-3.x - 在 python3.7.5 中导入 cv2 输出一些不寻常的东西
- python - 在列表中搜索字符串值
- git - ssh 服务器如何知道哪个公钥与 ssh 私钥匹配?
- angular - 调用 API 时可观察到的响应数据在控制台中显示数据但未在模板角度 10 中呈现