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

如何用正则表达式匹配.po文件中非空或多行的msgstr?

匹配.po文件中非空msgstr的正则表达式

针对需求,这里提供能准确匹配单行/多行非空msgstr、排除空msgstr ""的正则方案:

通用正则表达式(支持多行匹配的引擎)

msgstr\s*(?:"[^"]+"|""(?:\n\s*"[^"]+")+)

正则解析

  • msgstr\s*: 匹配msgstr关键字,允许后面跟任意空白字符(空格、制表符)
  • (?:"[^"]+"|""(?:\n\s*"[^"]+")+): 分支匹配两种非空场景:
    1. "[^"]+": 匹配单行非空内容,[^"]+确保引号内至少有一个非引号字符
    2. ""(?:\n\s*"[^"]+")+: 匹配多行格式,""对应多行开头的空引号,(?:\n\s*"[^"]+")+确保至少有一行带内容的引号行,避免匹配空的多行声明

进阶优化版(避免误匹配)

如果你的正则引擎支持负向断言,可使用更精准的版本:

msgstr\s*""(?:\n\s*"[^"]+")+|msgstr\s*"[^"]+"(?!")

这个版本通过(?!")确保单行匹配不会误触多行开头的msgstr "",适合复杂的.po文件场景。

匹配示例

  • 会被匹配的内容:
    • 单行:msgstr "Hello, Translation"
    • 多行:
      msgstr ""
      "This is a multi-line "
      "translation text."
      
  • 不会被匹配的内容:msgstr ""

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 15:52:12