You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则匹配问题:如何匹配指定开头且以分号+可选空白+换行结尾的文本

正则表达式修正方案

要解决值中包含分号导致匹配提前终止的问题,我们可以调整正则逻辑,不再用否定式排除分号,而是通过非贪婪匹配+明确的结束标志来定位每个value块的边界:

修正后的正则表达式

pattern = r'''[ ]+(value \w+)\n([\s\S]+?);[ \t]*\n'''

关键逻辑说明

  • [ ]+(value \w+)\n:匹配开头的前置空格,捕获value后跟的标识符,匹配到换行结束这一行。
  • ([\s\S]+?):[\s\S]匹配所有字符(包括换行和分号),+?是非贪婪模式,会尽可能少地匹配字符,直到遇到后面的结束标志。
  • ;[ \t]*\n:明确匹配块的结束标志——分号,后跟可选的空格/制表符,最后是换行符。这就确保只有块末尾的分号才会触发匹配终止,不会被值内的分号干扰。

测试验证

用你提供的带内部分号的示例文本测试:

value Y1N5NALC
      1 = 'Yes'  
      5 = 'No;Maybe'  
      7 = 'Not ascertained' ;

这个正则会正确捕获:

  • 第一捕获组:value Y1N5NALC
  • 第二捕获组:所有键值对内容(包括No;Maybe里的分号)

内容的提问来源于stack exchange,提问作者Hooked

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:55:40