php - 如何向前瞻、后向正则表达式添加额外的捕获组
问题描述
我正在使用这个正则表达式:(?<=\[).+?(?=\])
来匹配下面我的测试字符串中的数据。
这个正则表达式匹配我括号之间的所有内容。我还需要包含我的字符串的 '1234567890ABC...' 部分。我该怎么做?
这是我的测试字符串:
[one] [two] [three] 1234567890ABC...
解决方案
您可以使用\G
锚点并匹配除方括号外的任何字符,或匹配\w+
仅匹配单词字符。
(?:\[|\G(?!^)]\h\[?)\K[^][\s]+
(?:
非捕获组\[
匹配[
|
或者\G(?!^)
在上一场比赛中断言位置]\h\[?
匹配]
,水平空白字符和可选[
)\K
关闭组并重置匹配缓冲区[^][\s]+
匹配除方括号或空白字符外的任何字符的 1 次以上
推荐阅读
- python - 在 Python 中实现 Adams Bashforth Moulton 方法
- java - 使用 java.sql.Date 的 Spring Data JPA 查询比 java.util.Date 快 4 倍
- python - 如何处理分类变量列中的 0 值?
- sql - 计算另一列中具有相同值的对象的数量
- java - 如何在 Spring Boot 2.2.0 的集成测试中禁用安全性?
- typescript - TypeScript:类型 'Foo | 上不存在属性 'foo' 酒吧'
- excel - 如何通过单击按钮将工作簿中的选项卡导出到单个 Excel 工作簿
- typescript - 如何获得与 litteral 'aString' 类型匹配的 litteral 'aString' 值?
- c# - Azure 存储帐户 - 错误 403 被禁止
- azure-devops - 如何从 Azure DevOps 扩展访问 URL 参数