regex - 如何在正则表达式匹配中也获取字符串的其余部分?
问题描述
我有以下字符串:
this is a test string user:testuser,anotheruser hashtag:peach,phone,milk site:youtube.com,twitter.com flair:bobby
目前,正则表达式([^:\s]+):([^:\s]+)
匹配所有中间有冒号的过滤器(用户、主题标签、站点、天赋)。我怎样才能将剩余的"this is a test string"
部分作为另一场比赛?
演示:
解决方案
您可以添加一个替代方法,以尽可能少地匹配任何 0+ 个字符,从字符串的开头到第一个键后跟一个冒号:
^.*?(?=\s+[^:\s]+:)|([^:\s]+):([^:\s]+)
^^^^^^^^^^^^^^^^^^^
查看正则表达式演示
细节
^
- 字符串的开头 -.*?
- 除换行符之外的任何 0+ 个字符,尽可能少(?=\s+[^:\s]+:)
- 正向前瞻确保在当前位置的右侧,有\s+
- 1+ 空格[^:\s]+
:
- 除了和空格之外的 1+ 个字符:
- 一个冒号
推荐阅读
- ruby-on-rails - 如何在 Ruby on Rails 视图中显示国家代码和电话号码的最后 3 位数字?
- java - gradlew 签名报告给出错误:ch.qos.logback.classic.Logger 不能转换为 org.gradle.api.logging.Logger
- html - 在左右浮动时对齐文本和字体真棒图标
- javascript - 在 jquery 中使用正则表达式进行验证
- python - async/await 意外重复调用
- javascript - Notion API、Vanilla JS、Fetch 不起作用
- java - 登录后保存 facebook 登录数据 - Kotlin
- exception - 关于在 ARMv8-A(Cortex-A53) 中更改异常级别的问题
- c# - InvalidProgramException:发出具有非 void 返回类型的 IL 代码时发生无效的 IL 代码
- php - 如何通过自制软件更新 php