临门一脚,这个正则怎么匹配不上字符串啊?

253 天前
 bug51

目标字符串:

<!--#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.*$

哪位好心人帮忙看看 多谢多谢!!

1307 次点击
所在节点    正则表达式
13 条回复
creedowl
253 天前
要允许匹配多行
jgh004
253 天前
随便丢给个 ai 就能写出来了
Puteulanus
253 天前
^\<\!\-\-\#region REMOVE.*[.|\n|\W|\w]*\<\!\-\-\#endregion REMOVE.*$
你中间那个 ^ 是想干啥的
Leon406
253 天前
<!--#region REMOVE-->\s+(.*)<!--#endregion REMOVE-->

a0000
253 天前
^<!--#region REMOVE-->.*?<!--#endregion REMOVE-->$
https://regex101.com/
https://imgur.com/Zes8OLo
https://imgur.com/kkRZ5Gc
a0000
253 天前
a0000
253 天前

bug51
253 天前
@a0000 我想跑一个旧的 nodejs 环境,不支持 /regany/s ,s 修饰符,所以用不了。

我问 AI ,给我的回答是

/^\<\!\-\-\#region REMOVE.*[\s\S]*?\<\!\-\-\#endregion REMOVE.*$/m


能跑通正则测试。中间这里为啥多个了[\s\S]*?
bug51
253 天前
@a0000 在正则表达式中,[\s\S] 是一个常用的技巧,用来匹配任意字符(包括换行符)。这是因为在正则表达式中,. 默认是匹配除换行符外的任意字符,而 \s 是匹配空白字符(包括换行符)的元字符。

因此,[\s\S] 结合在一起就能够匹配任意字符,包括换行符。这在需要匹配多行文本时非常有用,因为 . 不能匹配换行符,但 [\s\S] 可以。

在这个正则表达式中,[\s\S]*? 的意思是尽可能少地匹配任意字符(包括换行符),直到下一个部分的匹配条件满足。这里的 *? 是一个非贪婪匹配量词,表示匹配任意数量的前一个元素,但尽可能少地匹配。
a0000
253 天前
#8 #9
@bug51 学到了,现在有 ai 也太方便了
bug51
253 天前
@Leon406 大佬,有嵌套的情况是怎么匹配最外层的?

<!-- #region HIDE -->
<!-- #region HIDE -->
需要匹配到
<!-- #endregion HIDE -->
需要匹配到 一堆 text
<!-- #endregion HIDE -->
bug51
253 天前
@Leon406 还有这个,也是同名标签嵌套,也想匹配到最外层的:

<!-- #region HIDE -->

<!-- #region HIDE -->
需要匹配到
<!-- #endregion HIDE -->
需要匹配到
<!-- #region HIDE -->
需要匹配到
<!-- #endregion HIDE -->

<!-- #endregion HIDE -->
bug51
253 天前
@Leon406 大佬 不用回复我了 ,最新的问题已经解决

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1032049

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX