
目标字符串:
<!--#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 2024-04-12 19:00:40 +08:00 要允许匹配多行 |
2 jgh004 2024-04-12 19:29:24 +08:00 随便丢给个 ai 就能写出来了 |
3 Puteulanus 2024-04-12 19:33:35 +08:00 ^\<\!\-\-\#region REMOVE.*[.|\n|\W|\w]*\<\!\-\-\#endregion REMOVE.*$ 你中间那个 ^ 是想干啥的 |
4 Leon406 2024-04-12 19:41:12 +08:00 |
5 a0000 2024-04-12 20:12:42 +08:00 ^<!--#region REMOVE-->.*?<!--#endregion REMOVE-->$ https://regex101.com/ https://imgur.com/Zes8OLo https://imgur.com/kkRZ5Gc |
6 a0000 2024-04-12 20:13:23 +08:00 |
7 a0000 2024-04-12 20:26:11 +08:00 |
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 --> |