我正在处理* .po文件,我正在尝试捕获msgid ""msgstr ""之间的所有文本,这不是很幸运,从来不超过一行:

msgid ""
"%s asdfgh asdsfgf asdfg %s even if you "
"asdfgdh sentences with no sense. We are not asking  translate "
"Shakespeare's %s Hamlet %s !. %s testing regex %s "
"don't require specific industry knowledge. enjoying "
msgstr ""

我尝试过的
var myArray = fileContent.match(/msgid ([""'])(?:(?=(\\?))\2.)*?\1/g);

感谢您的帮助,我对regex不太满意:(

最佳答案

这是提取所有文本的一种方法:

var match = text.replace(/msgid ""([\s\S]*?)msgstr ""/, "$1");

示例:http://jsfiddle.net/bqk79/
[\s\S]是一个字符类,它将匹配包括换行符在内的任何字符,因此[\s\S]*?将匹配任意数量的任何字符。在其他语言中,您可以使用sDOTALL标志使.匹配换行符,但是Javascript不支持。

请注意,您的正则表达式未提及单引号,但是如果您需要能够在msgid ''msgstr ''之间进行匹配,则可以使用以下命令:
var match = text.replace(/msgid (['"]{2})([\s\S]*?)msgstr \1/, "$2");

09-15 15:05