Regex parse YAML的正则表达式
我有许多用YAML文件组织的翻译文件。例如:Regex parse YAML的正则表达式,regex,yaml,Regex,Yaml,我有许多用YAML文件组织的翻译文件。例如: 每个月:Kas mėnesį 银行账户编号:A/s “内部服务器错误”:“Vidinėserverio klaida” 下一个锁:“Kitas užrakinimas” 两天后00:00:两天后00:00 同一天00:00:“Tąpaąia dieną00:00” “系列%number%”:“系列:编号%number%” 不允许在重置日期前编辑记录:“Neleidžiama kurtiįrašanksčiau archyvo datos:%date%
每个月:Kas mėnesį
银行账户编号:A/s
“内部服务器错误”:“Vidinėserverio klaida”
下一个锁:“Kitas užrakinimas”
两天后00:00:两天后00:00
同一天00:00:“Tąpaąia dieną00:00”
“系列%number%”:“系列:编号%number%”
不允许在重置日期前编辑记录:“Neleidžiama kurtiįrašanksčiau archyvo datos:%date%”
升级后,我的框架要求我在所有翻译消息中添加引号。用手来做这件事将是一项非常漫长而复杂的任务。我已经试着为这个(.*):[\s]{0,2}([^']{0,1}[\%]?[\w\d]+[\%]?[\/,\-\.\(\)\%\\\\\\\\uh\p{L}]+
编写下一个正则表达式,它有一个小错误,它还匹配如下行:
“系列%number%”:“系列:编号%number%”
不允许在重置日期前编辑记录:“Neleidžiama kurtiįrašanksčiau archyvo datos:%date%”
但我只想匹配不带引号的行:
每个月:Kas mėnesį
银行账户编号:A/s
两天后00:00:两天后00:00
这是一个在线正则表达式编辑器,我试图在其中实现,您可以在最后一个字符类中添加匹配的a
:
和数字\d
,在冒号后匹配1-2个空格字符,并使用锚定符^
和$
^(.*?):\s{1,2}(%?\w+%?[\/,.()_\h\p{L}:\d-]+)$
关于你尝试的模式
可以写成[\%]?
%?
也与\w
匹配,因此此\d
可以写成[\w\d]+
\w+
- 如果值应在%之间或两者都不在,则可以将
写入%?\w+%?
(?:%\w+%\w+
- 它取决于分隔符,但您不必转义
\/
如果要匹配除第一个可选字符
%
之前的或'
以外的任何字符:
^(.*?):\s{1,2}([^'"]?%?\w+%?[\/,.()_\h\p{L}:\d-]+)$
你是说像这样吗<代码>^(.*):(?:%\w+%\w+%\w+[\/,\-。(?:%\h\p{L}:\d]+)$
@第四只鸟,是的,这正是我需要的。谢谢,我知道了,我的正则表达式也能工作,但我忘了锚定^
和$
。无论如何,非常感谢。