[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 523066680 于 2023-3-12 00:23 编辑

其实我看题主四楼和五楼的例子都可以用  );  来限定末尾。
当然更复杂的情况且有必要的话可以考虑设计grammar来解决

抄了一段perl6的文法案例
  1. grammar pair {
  2.     token TOP     { <func> }
  3.     rule func    { <name> '(s' <.ws> <string> ')' }
  4.     rule name    { [\w]+ }
  5.     rule string  {
  6.         (:ignoremark \") ~ \"
  7.         [
  8.             \w |
  9.             [ '\\' <[\\/bfnrt"():]> ] |
  10.             <-[\\\"\n\t]>+
  11.         ]*
  12.     }
  13. };
  14. my $match = pair.parse('abc(s "\\:\/())))abc\([^\)]*[^\(]*\)")');
  15. say $match;
复制代码
结果
  1. 「abc(s "\:\/())))abc\([^\)]*[^\(]*\)")」
  2. func => 「abc(s "\:\/())))abc\([^\)]*[^\(]*\)")」
  3.   name => 「abc」
  4.   string => 「"\:\/())))abc\([^\)]*[^\(]*\)"」
  5.    0 => 「"」
复制代码
并没有解决问题 (逃

TOP

返回列表