我有一些文字:
#: apps/catalogue/abstract_models.py:206
msgid ""
"Universal Product Code (UPC) is an identifier for a product which is not "
"specific to a particular supplier. Eg an ISBN for a book."
msgstr ""
#: apps/catalogue/abstract_models.py:213
#: templates/oscar/dashboard/catalogue/product_list.html:87
#: templates/oscar/dashboard/catalogue/product_update.html:168
#: templates/oscar/dashboard/catalogue/product_update.html:190
msgid "Parent"
msgstr "والد"
#: apps/catalogue/abstract_models.py:214
msgid ""
"Only choose a parent product if this is a 'variant' of a canonical "
"catalogue. For example if this is a size 4 of a particular t-shirt. Leave "
"blank if this is a CANONICAL PRODUCT (ie there is only one version of this "
"product)."
msgstr ""
我希望使用正则表达式在msgid ""
和msgstr ""
之间选择文字。我不想选择翻译msgid
。
我怎么能这样做?
答案 0 :(得分:1)
<击> 你这样做:
(?s)aaa(.*?)bbb
也就是说,使用您的语言中的s
选项或其等效选项,以便.
匹配换行符。
如果aaa
和bbb
必须在他们自己的行上,您可以这样做:
(?sm)^aaa$(.*?)^bbb$
m
选项可让^
和$
在每个开头/结尾匹配。
这是regex101的最后一个案例:http://regex101.com/r/oM7fQ2/1
击>
更新现在问题大不相同......
(?sm)^msgid\s+"(.*?)"\s*\n(.*?)^msgstr\s+"(.*?)"\s*$
这也捕获了引号之间的字符串。
答案 1 :(得分:1)
我希望使用正则表达式在
aaa
和bbb
之间选择文字。
这可能会对你有所帮助。从索引1获取匹配的组。
^a{3}\r?\n([\s\S]*?)\r?\n(?=^b{3}\r?\n?)
模式说明:
^ the beginning of the string
a{3} 'a' (3 times)
\r? '\r' (carriage return) (optional)
\n '\n' (newline)
( group and capture to \1:
[\s\S]*? any character (0 or more times)(least possible)
) end of \1
\r? '\r' (carriage return) (optional)
\n '\n' (newline)
(?= look ahead to see if there is:
^ the beginning of the string
b{3} 'b' (3 times)
\r? '\r' (carriage return) (optional)
\n? '\n' (newline) (optional)
) end of look-ahead
我想在
msgid ""
和msgstr ""
之间使用正则表达式选择文字。
根据您的编辑更改,如下面的正则表达式:
^msgid ""\r?\n([\s\S]*?)\r?\n(?=^msgstr ""\r?\n?)