regex - 只获得第一场比赛
问题描述
我只想获得字符串的第一个匹配项。
(?<=\[TITLE.+)suffix=[^|\]]+\|?
如果我的字符串是[TITLE|suffix=my value|prefix=another value]
,一切都很好,我只得到 1 个匹配项,但如果字符串是[TITLE|suffix=my value|prefix=another value][DYNAMIC|suffix=my value|prefix=another value]
,我得到 2 个匹配项,但我需要的只是第一个匹配项。
解决方案
您可以通过排除匹配字符[
或]
表示单独部分的开始和停止而不是使用点来匹配任何字符来使匹配更加具体。
当您有多个匹配项时,您可以选择返回第一个匹配项,但您可以使模式更精确以保持在产生单个匹配项的边界内。
在这种情况下,您可以排除匹配]
或正如@Wiktor Stribiżew
指出的那样,排除开头[
(?<=\[TITLE[^\]]*)suffix=[^|\]]+\|?
推荐阅读
- r - 在 R 中使用密码进行 Zip 压缩
- laravel - Alpine js 兄弟转换
- php - 为什么我的 fetch() 没有返回整行?
- java - 我在 CMD 中使用什么 java 代码来退出程序或结束程序?
- c# - Blazor 修改 CaptureUnmatchedValues 现有属性不会重新呈现
- c# - 如何在按钮单击时将 ID 参数传递给 Blazorise 模态,从一个组件到另一个组件?
- amazon-web-services - 如何查看调用 Lambda 函数的用户
- javascript - 使用 jQuery 从多个文件对象中删除项目
- php - grpc 示例 php,“找不到类 'Grpc\ChannelCredentials'。” 从浏览器打开时,从终端工作
- bash - 覆盖行的脚本的着色输出?