目标字符串:
<!--#region REMOVE-->
<h1>sdfsdf</h1>
<h2>sdfsdf</h2>
<h1>sdfsdf</h1>
<h2>sdfsdf</h2>
<h1>sdfsdf</h1>
<h2>sdfsdf</h2>
<!--#endregion REMOVE-->
正则:
^\<\!\-\-\#region REMOVE.*[.|\n|\W|\w]*^\<\!\-\-\#endregion REMOVE.*$
哪位好心人帮忙看看 多谢多谢!!
^\<\!\-\-\#region REMOVE[\s\S]*?\<\!\-\-\#endregion REMOVE.*$
要匹配多行。AI牛逼
1
creedowl 224 天前 1
要允许匹配多行
|
2
jgh004 224 天前 1
随便丢给个 ai 就能写出来了
|
3
Puteulanus 224 天前
^\<\!\-\-\#region REMOVE.*[.|\n|\W|\w]*\<\!\-\-\#endregion REMOVE.*$
你中间那个 ^ 是想干啥的 |
4
Leon406 224 天前 1
|
5
a0000 224 天前
^<!--#region REMOVE-->.*?<!--#endregion REMOVE-->$
https://regex101.com/ https://imgur.com/Zes8OLo https://imgur.com/kkRZ5Gc |
6
a0000 224 天前
|
7
a0000 224 天前
|
8
bug51 OP @a0000 我想跑一个旧的 nodejs 环境,不支持 /regany/s ,s 修饰符,所以用不了。
我问 AI ,给我的回答是 /^\<\!\-\-\#region REMOVE.*[\s\S]*?\<\!\-\-\#endregion REMOVE.*$/m 能跑通正则测试。中间这里为啥多个了[\s\S]*? |
9
bug51 OP @a0000 在正则表达式中,[\s\S] 是一个常用的技巧,用来匹配任意字符(包括换行符)。这是因为在正则表达式中,. 默认是匹配除换行符外的任意字符,而 \s 是匹配空白字符(包括换行符)的元字符。
因此,[\s\S] 结合在一起就能够匹配任意字符,包括换行符。这在需要匹配多行文本时非常有用,因为 . 不能匹配换行符,但 [\s\S] 可以。 在这个正则表达式中,[\s\S]*? 的意思是尽可能少地匹配任意字符(包括换行符),直到下一个部分的匹配条件满足。这里的 *? 是一个非贪婪匹配量词,表示匹配任意数量的前一个元素,但尽可能少地匹配。 |
11
bug51 OP @Leon406 大佬,有嵌套的情况是怎么匹配最外层的?
<!-- #region HIDE --> <!-- #region HIDE --> 需要匹配到 <!-- #endregion HIDE --> 需要匹配到 一堆 text <!-- #endregion HIDE --> |