[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
俺只知道目前地球上只有人类大脑和其它生物的才是智能。其它都是复读机,炒作=>股票

gpt 是错的
  1. $pattern = @"
  2. (?x)\(
  3.     (                   # 开始一个平衡组
  4. (?>[^()]*)      # 匹配除了括号以外的任意字符 固化不回溯,其实多余 因[^()]*本身最多回溯一个字符,
  5.         |               # 分支
  6.         (?<o>\()        # 匹配左圆括号并将其压入名为o的栈
  7.         |               # 分支
  8.         (?<-o>\))       # 匹配右圆括号并将其弹出名为o的栈
  9.     )*                  # 重复上述步骤多次
  10.     (?(o)(?!))          # 如果o平衡组不为空,则匹配失败
  11. \)
  12. "@
  13. [regex]::Matches($text, $pattern).Value
复制代码
  1. [regex]::Matches($text, "(?x)\( ( [^()]* | (?<o>\() | (?<-o>\)) )*(?(o)(?!)) \)").Value
复制代码
2

评分人数

QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

再次声明: ? 不参与匹配, + * 均匹配从匹配点起的后面的全部(不是网上说的匹配0个1个多个)然后回溯,结果写入 GROUPS[0]中。
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

回复 19# WHY


    本来不想登陆的,但看了你写提示那个,感觉还是说两句的好。 请问您可以一个字符一个字符的 检索出 ([^()]+)* 的匹配和回溯教程吗? [^()]+ ,[^()]* 它们的的真正含意是什么吗? 还有你给的链接,那种破三烂的正则(看起来不像NET正则)就不要给链接(鄙视csdn,虽然俺开始也是看这的,但到后来发现里面的文章各种垃圾, 然后屏蔽),会降低您的智力。链接中的 (\.*)* 你想过这是什么破玩意吗。你可以想下这个回溯过程,指数级增长(还是那句话对正则回溯不清楚就不要写.* .+ .*? .+?之类), 还有 你确定 [^()]* [^()]+ 有回溯?可以自己实验下。不要拿网上那种垃圾文章还有阿三的微软例子来证明自己是对的。

  您应该知道 visual studio code 中最烂的应用是什么。 不夸张的说是powershell;vscode对py js java等支持的好得不得了,但对PS支持就是一个烂字。
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

([^()]+)*  和 [^()]+ 是两上不同的东西
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

本帖最后由 xczxczxcz 于 2023-6-6 12:07 编辑

记得以前一直不知道正则到底是如何匹配,它每一步在做什么,因为不清不楚就不知道如何正确的写正则。然后,脑一热,准备写内存跟踪(因网上的教程不可靠,天下一大抄),架子都写了,然后就发现在一个网上的一个角落有位古董级大佬发有一篇日志,记录了他追踪内存的数据,他曾经也是不知正则的所以然就写了内存跟踪,看正则到底在内存中写了什么数据。然后的然后就再也不看网上的正则教程了,因为它妈的除了烂还是烂。现在就不知道发明正则的大佬的匹配和回溯过程是不是我们现在理解的一样。

* + 共同的东西是 遇到与条件相符,匹配立即停止,若匹配完,有结果,+ *都返回true; 没结果 * 返回
true; +返回false;  ?反向回溯,

因从没写过教程,感觉写的很乱,有些地方条件没写上有可能导致说法不成立;比如 [^\w]*, 这是不回溯的;但 [^\w]*a 这是回溯的
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

返回列表