我必须在VsCode中找到任何带有i18n属性的html标记,然后将其静态文本括在大括号内。就像这样:
<p i18n>something</p> <p i18n>{something | odd}</p>
字符串我花了几个小时四处寻找可以工作的正则表达式,到目前为止还没有找到。
ruoxqz4g1#
我认为这可能有效(没有经过广泛的测试,如果我犯了任何错误,我不会感到惊讶):将其放入搜索字段并启用regex搜索模式:(<[^>]+ i18n( [^>]\+)?>)([^<]*)(</\w>)。在替换字段中输入以下内容:$1{$3}$4的值。如果您想忽略已经有一对内容花括号的内容,那么在搜索字段中使用(<[^>]+ i18n( [^>]\+)?>)([^{][^<]*[^}])(</\w>)。
(<[^>]+ i18n( [^>]\+)?>)([^<]*)(</\w>)
$1{$3}$4
(<[^>]+ i18n( [^>]\+)?>)([^{][^<]*[^}])(</\w>)
f3temu5u2#
如果<p>标签包含其他标签,则必须捕获第一个</p>文本之前的所有内容。如果内容使用(?!\{)以{开头,则不要选择<p>标记正则表达式查找:(<p(?: [^>]+)? i18n(?: [^>]+)?>)(?!\{)(.*?)(</p>)个替换为:$1{$2}$3个如果您想对<div>标记执行此操作,则此操作不起作用,因为它们可以包含<div>标记。然后你需要一个像 emmet 这样的HTML解析器。正则表达式查找:(<div(?: [^>]+)? i18n(?: [^>]+)?>)(?!\{)
<p>
</p>
(?!\{)
{
(<p(?: [^>]+)? i18n(?: [^>]+)?>)(?!\{)(.*?)(</p>)
$1{$2}$3
<div>
(<div(?: [^>]+)? i18n(?: [^>]+)?>)(?!\{)
Alt_Enter
ArrowRight
Ctrl+X
foobar
Tab
Ctrl+V
Esc
2条答案
按热度按时间ruoxqz4g1#
我认为这可能有效(没有经过广泛的测试,如果我犯了任何错误,我不会感到惊讶):
将其放入搜索字段并启用regex搜索模式:
(<[^>]+ i18n( [^>]\+)?>)([^<]*)(</\w>)
。在替换字段中输入以下内容:$1{$3}$4
的值。如果您想忽略已经有一对内容花括号的内容,那么在搜索字段中使用
(<[^>]+ i18n( [^>]\+)?>)([^{][^<]*[^}])(</\w>)
。f3temu5u2#
如果
<p>
标签包含其他标签,则必须捕获第一个</p>
文本之前的所有内容。如果内容使用
(?!\{)
以{
开头,则不要选择<p>
标记正则表达式查找:
(<p(?: [^>]+)? i18n(?: [^>]+)?>)(?!\{)(.*?)(</p>)
个替换为:
$1{$2}$3
个如果您想对
<div>
标记执行此操作,则此操作不起作用,因为它们可以包含<div>
标记。然后你需要一个像 emmet 这样的HTML解析器。正则表达式查找:
(<div(?: [^>]+)? i18n(?: [^>]+)?>)(?!\{)
Alt_Enter
选择所有引用ArrowRight
个<div>
标签的内容:执行命令:** emmet :向外平衡**<div>
内容:Ctrl+X
foobar
或可能是 emmet 表达式和Tab
Ctrl+V
个Esc
个