小编Cha*_*rch的帖子

是否有一个像样的Vim regexp OR命令?找不到匹配的最佳方法是什么?

我在脚本中有一些不匹配的if和fi语句.除了if's else's和fi's之外,我想删除所有内容.就这样我可以看到结构.为什么这么强大的编辑器如此努力?我需要一个BIGFATOR运算符来进行正则表达式或一些顿悟,但是我不知道正则表达式上的pontification只是在VIM7.2中实际工作的东西.

:g/[^\t] if [/ print

将打印出ifs

:g/[^\t] fi/print

将打印出fi

我想做的是或条件

:g/[^\t] fi BIGFATOROPERATOR [^\t] fi/print

我做了以下成功...但我觉得我工作太难了!

:调用TripMatch('[^\t]*if [','else','fi [\ t $]')

功能!TripMatch(str1,str2,str3)

let var1 = a:str1

let var2 = a:str2

让var3 = a:str3

让max = line("$")

设n = 1

n在范围内(1,最大)

让currentline = getline(n)

if currentline =~? var1

   echo n "1:" currentline

else

   if currentline =~? var2

      echo n "2:" currentline

   else

      if currentline =~? var3

         echo n "3:" currentline

      else

         let foo = "do nothing"

      endif

   endif …
Run Code Online (Sandbox Code Playgroud)

regex vim

36
推荐指数
3
解决办法
2万
查看次数

计算二进制数据相似度

我在这里看到了一些与确定文件相似性有关的问题,但它们都与特定域(图像,声音,文本等)相关联.作为解决方案提供的技术需要了解所比较文件的基础文件格式.我正在寻找的是一种没有此要求的方法,可以比较任意二进制文件,而无需了解它们包含的数据类型.也就是说,我希望确定两个文件的二进制数据相似百分比.

为了给你提供更多的细节,即使这可能适用于很多事情,我确实有一个特定的问题,我正在努力.我目前也有一个有效的解决方案,但我不认为它是理想的.在比较方法方面可能存在许多优化,并存储结果.希望这里的一些人能够给我一些新的想法.我可能会在几天之后编辑一些关于我当前方法的信息,但我不想通过告诉你我是如何做的来偏见人们对这个问题的想法.

我正在研究的问题是视频游戏ROM映像的克隆检测.对于那些没有仿真经验的人来说,ROM是游戏卡带上的数据转储.ROM"克隆"通常是同一游戏的修改版本,最常见的类型是翻译版本.例如,NES 的原始最终幻想的日语和英语版本是克隆.游戏几乎分享了他们所有的资产(精灵,音乐等),但文本已被翻译.

目前有几个小组致力于维护各种系统的克隆列表,但据我所知,这一切都是手动完成的.我试图做的是找到一种方法来自动和客观地检测类似的ROM图像,基于数据相似性而不是"这些似乎是相同的游戏".检测克隆有几个原因,但其中一个主要动机是与固体压缩一起使用.这允许将所有游戏克隆压缩到同一档案中,整个压缩克隆集通常只占用比单个ROM中的一个更多的空间.

提出潜在方法时需要考虑的一些问题:

  • ROM的大小各不相同,具体取决于系统.有些很小,但现代系统可能有大型,256MB或更多.一些(所有?)系统只有2个可能的大小的功能,其中一个系统上的130MB游戏将具有256MB的rom,基本上是空的.请注意,因此,如果游戏版本超过阈值并且必须使用两倍大小的盒式磁带,则某些克隆可能具有完全不同的大小.
  • 目前在许多系统上有数千种已知的ROM,大多数系统仍然不断发布新的系统.即使对于较旧的系统,也有一个主要的ROM黑客社区经常生产修改后的ROM.
  • 为每个可能的ROM对存储相似性数据将导致数百万行数据用于任何更流行的系统.具有5000个ROM的系统将需要2500万行相似性数据,其中一个新游戏添加另外5000行.
  • 处理状态必须是可恢复的,因此如果它被中断,它可以从中断的地方继续.使用任何方法,将需要大量处理,并假设整个事件将在一个批次中运行是不安全的.
  • 可以随时添加新的ROM,因此该方法不应该假设它已经具有"完整"集.也就是说,即使您已经找出所有现有ROM的相似性,如果添加了一个新的(并且这也可能在之前的处理完全完成之前发生),必须有一种方法将其与之前的所有ROM进行比较,以确定哪个(如果有的话)它是克隆的.
  • 较高的处理速度应优先于准确性(至某一点).知道两个ROM是94%还是96%相似并不是特别重要,但如果需要一天的处理时间来比较新的ROM与之前的所有ROM,那么该程序可能永远不会真正完成.

这是一个有趣的问题,我期待看到其他人能想到的东西.如果您想了解更多细节,请在评论中告诉我,我会尽力提供.

comparison similarity binary-data

34
推荐指数
4
解决办法
9360
查看次数

Python和Javascript正则表达式有什么不同?

Python和JavaScript正则表达式语法是否相同?

如果没有,那么:

  1. 他们之间有什么重要的区别
  2. 是否有一个"实现"JavaScript regexp的python库?

javascript python regex

30
推荐指数
2
解决办法
8945
查看次数

如何检查文件名是否与通配符模式匹配

我有一个通配符模式,可能是"*.txt"或"POS ??.dat".

我还有内存中的文件名列表,我需要与该模式进行比较.

我将如何做到这一点,请记住,我需要与IO.DirectoryInfo.GetFiles(模式)使用完全相同的语义.

编辑:盲目地将其转换为正则表达式将无法正常工作.

.net regex

28
推荐指数
4
解决办法
3万
查看次数

Python:如何将markdown格式的文本转换为文本

我需要将markdown文本转换为纯文本格式以在我的网站中显示摘要.我想要python中的代码.

python markdown parsing

28
推荐指数
3
解决办法
2万
查看次数

HttpWebRequest以URL结尾的URL

当我使用WebRequest.Create(" http:// abc/test.")进行GET时,我得到404,因为根据fiddler,尾随点被.NET剥离,Web服务器需要点.我该如何防止或解决它.任何解决方法表示赞赏!

.net webrequest httpwebrequest

26
推荐指数
2
解决办法
9291
查看次数

解决非图表(Picross)

嘿,这是星期五下午,让我们有一个有趣的拼图/算法问题来解决.

我最喜欢的任天堂DS游戏之一是Picross DS.游戏很简单,它涉及解决称为Nonograms的谜题.您可以在这里尝试一个简单的在线Picross克隆:TylerK的Picross.

非图是网格,为网格的每一行和每列定义数字序列.这些数字定义了该行/列的"填充"方块的块,但未定义块两侧的未填充区域.例如,如果您有一行如下所示:

http://steam-punk.net/images/picross1.jpg

该行的可能解决方案包括:

http://steam-punk.net/images/picross2.jpg http://steam-punk.net/images/picross3.jpg

等等

"4 5"只是告诉你,在行的某个地方,填充了4个连续的块,然后填充了5个连续的块.这些块将是填充的唯一块,并且它们之前/之后的空间量是没有定义的.

当所有行和列符合其定义时,拼图就完成了,没有任何矛盾.

概念上非常简单的游戏,但手动解决其中一些可能需要一段时间.Picross DS的谜题逐渐增加到25x20网格,这通常需要我花半个小时来解决.

但是,我总是想到编写一个程序来解决它是一个非常简单的游戏.我从未接触过它,但也许这里的一些人会喜欢这个挑战.如果发布了相当数量的解决方案,我会将它们作为一个大型拼图相互比较,类似于Paolo Bergantino在这里用他的Boggle问题做的.如果你想参考,那么在Nonogram Wikipedia页面上有很多关于攻击谜题的方法的信息.

这是TylerK的Picross中拼图#1的一个易于解析的定义,所以你可以为程序提供一些东西.第1行是拼图维度(可能是不必要的),第2行是行定义,第3行是列定义.这只是我想到的第一件事,所以如果有人能想到更好的输入格式,请随意评论或编辑这篇文章以包含它.

15 15
15,4 5,2 4,1 3,2,2,2 4 3,2 6 2,2 1 6 2,2 1 1 4 2,1 1,1 3 2 1,2 2 1 2 1,3 3 2 1,9
4 4,3 1 2 3,2 1 2 2,2 1 1,1 4 2,1 3,1 8,1 3 1 1,1 4 2 1,1 4,2 4 …
Run Code Online (Sandbox Code Playgroud)

puzzle algorithm

25
推荐指数
3
解决办法
3万
查看次数

正则表达式拉出C函数原型声明?

当谈到正则表达式时,我在学习曲线上的某个地方,我需要使用它们来自动修改一堆C头中的函数原型.有没有人知道一个不错的正则表达式来查找C头中的任何和所有函数原型,同时排除其他所有内容?

编辑:最初不清楚的三件事:

  1. 关心C++,只关心C.这意味着没有模板等担心.
  2. 该解决方案必须使用typedef和structs,不仅限于基本的C类型.
  3. 这是一种一次性的事情.它不需要漂亮.只要它有效,我不在乎它有多大,但我不想要一个复杂,难以实施的解决方案.

c regex function

24
推荐指数
5
解决办法
2万
查看次数

在Graphviz中强制"主线"节点成直线(或替代)

我正在尝试使用Graphviz点(但我愿意使用其他东西)来生成一个带有长"节点主线"和许多小分支的图形.我希望主线从左到右是直的,在它上面或下面有小分支.然而,Graphviz"平衡"了两个分支,所以我最终得到了一个弯曲的图形.

为了说明,这是一个类似于我目前得到的草图:

当前图表

这就是我真正想要的:

想要图

有没有办法强制或鼓励Graphviz生成第二个图形?我可以使用"虚拟"第二个分支让它做三向布局,然后隐藏/删除虚拟对象,但如果有更好的选择,那将是更好的选择.

dot graphviz

23
推荐指数
2
解决办法
9826
查看次数

将字符串拆分为Ruby中的字符对

我有一个字符串(例如"AABBCCDDEEFF")并希望将其拆分为一个数组,每个元素包含两个字符 - ["AA","BB","CC","DD","EE","FF"] .

ruby regex

22
推荐指数
2
解决办法
9272
查看次数