我正在处理* .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]*?
将匹配任意数量的任何字符。在其他语言中,您可以使用s
或DOTALL
标志使.
匹配换行符,但是Javascript不支持。请注意,您的正则表达式未提及单引号,但是如果您需要能够在
msgid ''
和msgstr ''
之间进行匹配,则可以使用以下命令:var match = text.replace(/msgid (['"]{2})([\s\S]*?)msgstr \1/, "$2");