正则表达式模式 - 忽略空格、换行符、制表符等
Regex pattern - ignore whitespace, line breaks, tabs etc
我有这样的东西:
<div class="wp-caption">
<a href="https://">
<img src="https://" alt="blabla">
</a>
</div>
我想用
替换它
<figure>
<a href="https://">
<img src="https://" alt="blabla">
</a>
</figure>
我正在使用这样的正则表达式模式:
搜索 <div class="wp-caption">(.*)</div>
替换 <figure>(.*)</figure>
哪个工作正常,但当里面有换行符、空格、制表符或其他一些格式时,我怎么知道要忽略它?
我正在使用 Sublime Text..什么是使用 Perl 风格的表达式。
在 Perl 中这样使用怎么样?
s/<div class="wp-caption">(.*?)<\/div>/<figure><\/figure>/sg
- 正则表达式替换操作与
s///
- 为避免贪婪匹配,使用
?
和 .*
- 捕获的带
(.*?)
的字符串存储在变量$1中。
正则表达式中的 /
可以使用 \
(反斜杠)进行转义。
s
选项表示忽略换行符的单行模式。
g
选项表示全局匹配(处理所有匹配)。
这对我有用:
Find: (?s)<div class="wp-caption">(.*?)</div>
Replace: <figure></figure>
这里的技巧是 (?s)
使点匹配换行符,(.*?)
捕获 非贪婪 (将在下一个 </div>
) <div>
标签的内容。
是对捕获组 1 的 反向引用 。
使用dotall
修饰符如下:
(?s)<div[^>]+>(.*?)</div>
并替换为:
<figure></figure>
这应该有效,至少对于您的示例:
s/div(\sclass="wp-caption")?/figure/g;
在 sublime 上 Ctrl+f(Grep)
查找:
<div[^>]*>([\s\S]*?)</div>
替换:
<figure></figure>
除了 的回答之外,如果您不想使用内联标志,那么您可以使用这样的正则表达式技巧:
<div class="wp-caption">([\s\S]*?)</div>
用替换字符串:
<figure></figure>
诀窍是使用 [\s\S]
,这意味着您将多次匹配空格和非空格(即所有内容)。
尝试一下它会起作用
$variable =~ s!<div(?:\s+[^<>)?)?>(.*?)</div>!
my $div_cont = ;
"<figure>".$div_cont."</figure>";
!sge;
我有这样的东西:
<div class="wp-caption">
<a href="https://">
<img src="https://" alt="blabla">
</a>
</div>
我想用
替换它<figure>
<a href="https://">
<img src="https://" alt="blabla">
</a>
</figure>
我正在使用这样的正则表达式模式:
搜索 <div class="wp-caption">(.*)</div>
替换 <figure>(.*)</figure>
哪个工作正常,但当里面有换行符、空格、制表符或其他一些格式时,我怎么知道要忽略它?
我正在使用 Sublime Text..什么是使用 Perl 风格的表达式。
在 Perl 中这样使用怎么样?
s/<div class="wp-caption">(.*?)<\/div>/<figure><\/figure>/sg
- 正则表达式替换操作与
s///
- 为避免贪婪匹配,使用
?
和.*
- 捕获的带
(.*?)
的字符串存储在变量$1中。
正则表达式中的 /
可以使用\
(反斜杠)进行转义。s
选项表示忽略换行符的单行模式。g
选项表示全局匹配(处理所有匹配)。
这对我有用:
Find: (?s)<div class="wp-caption">(.*?)</div>
Replace: <figure></figure>
这里的技巧是 (?s)
使点匹配换行符,(.*?)
捕获 非贪婪 (将在下一个 </div>
) <div>
标签的内容。
是对捕获组 1 的 反向引用 。
使用dotall
修饰符如下:
(?s)<div[^>]+>(.*?)</div>
并替换为:
<figure></figure>
这应该有效,至少对于您的示例:
s/div(\sclass="wp-caption")?/figure/g;
在 sublime 上 Ctrl+f(Grep)
查找:
<div[^>]*>([\s\S]*?)</div>
替换:
<figure></figure>
除了
<div class="wp-caption">([\s\S]*?)</div>
用替换字符串:
<figure></figure>
诀窍是使用 [\s\S]
,这意味着您将多次匹配空格和非空格(即所有内容)。
尝试一下它会起作用
$variable =~ s!<div(?:\s+[^<>)?)?>(.*?)</div>!
my $div_cont = ;
"<figure>".$div_cont."</figure>";
!sge;