问题标签 [pattern-matching]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
15256 浏览

f# - Explaining pattern matching vs switch

I have been trying to explain the difference between switch statements and pattern matching(F#) to a couple of people but I haven't really been able to explain it well..most of the time they just look at me and say "so why don't you just use if..then..else".

How would you explain it to them?

EDIT! Thanks everyone for the great answers, I really wish I could mark multiple right answers.

0 投票
11 回答
205831 浏览

bash - 在 unix/linux shell 中进行模式匹配时,如何使用反向或负通配符?

假设我想复制一个目录的内容,不包括名称中包含“音乐”一词的文件和文件夹。

应该用什么代替 [exclude-matches] 来实现这一点?

0 投票
10 回答
31774 浏览

python - Python中列表的模式匹配

我想对 Python 中的列表进行一些模式匹配。例如,在 Haskell 中,我可以执行以下操作:

所以当我传入一个列表时,head将是第一个元素,并且rest将是尾随元素。

同样,在 Python 中,我可以自动解包元组:

我想对 Python 中的列表做类似的事情。现在,我有一个返回列表的函数,以及执行以下操作的代码块:

我想知道我是否可以用 Python 的一行而不是两行来做到这一点。

0 投票
2 回答
38464 浏览

pattern-matching - OCaml:在另一个内部匹配表达式?

我目前正在使用 OCaml 进行一个小项目;一个简单的数学表达式简化器。我应该在表达式中找到某些模式,并对其进行简化,从而减少表达式中括号的数量。到目前为止,我已经能够实现除了两个规则之外的大多数规则,为此我决定创建一个递归的、模式匹配的“过滤器”函数。我需要执行的两条规则是:

- 将 a - (b + c) 或类似形式的所有表达式转换为 a - b - c

-将a / (b * c)或类似形式的所有表达式转换为a / b / c

...我怀疑这会相当简单,一旦我设法实现了一个,我就可以轻松地实现另一个。但是,我在使用递归模式匹配函数时遇到了问题。我的类型表达是这样的:

我主要遇到的问题是匹配表达式。例如,我正在尝试这样的事情:

但是,似乎标记行上的匹配表达式被识别为先前“内部匹配”而不是“主要匹配”的一部分,因此永远不会识别所有“Quot(...)”表达式。甚至可以在像这样的其他匹配表达式中包含匹配表达式吗?结束内部匹配的正确方法是什么,以便我可以继续匹配其他可能性?

忽略逻辑,因为这几乎是我首先想到的,只是我无法尝试它,因为我必须首先处理这个“匹配”错误,尽管关于如何处理递归的任何建议或逻辑将受到欢迎。

0 投票
5 回答
40733 浏览

linux - 在 Emacs 中匹配括号的命令是什么?

Emacs 中匹配括号的命令是什么(相当于%Vim 中的命令)?

0 投票
29 回答
109315 浏览

c# - byte[] 数组模式搜索

任何人都知道一种在 byte[] 数组中搜索/匹配字节模式然后返回位置的好方法。

例如

0 投票
2 回答
15217 浏览

pattern-matching - 如何识别电子邮件属于现有线程或对话

我们有一个内部 .NET 案例管理应用程序,可以自动从电子邮件创建一个新案例。我希望能够识别与原始电子邮件相关的其他电子邮件,以便我们可以防止创建重复案例。

我观察到许多(但不是全部)电子邮件都有一个看起来很有用的线程索引标题。

有人知道我们可以使用的简单算法或包吗?

0 投票
9 回答
3992 浏览

algorithm - 识别网页物理地址的算法

识别 HTML 页面上的结构化数据的最佳算法是什么?

例如,Google 会识别电子邮件中的家庭/公司地址,并提供该地址的地图。

0 投票
6 回答
3799 浏览

pattern-matching - 以编程方式比较两行(股票模式匹配)

我想做的是采用某种股票模式(定义为一系列 x 和 y 坐标)并将其与历史股票价格进行比较。如果我在历史价格中发现任何与我定义的模式相似的东西,我想将其作为匹配项返回。

我不确定如何确定两条曲线的相似程度。我做了一些研究,你可以找到两条直线的相似性(使用线性回归),但我还没有找到比较两条曲线的好方法。

我现在最好的方法是从我正在查看的历史数据范围中获取几个高点和低点,找到线的斜率,然后将它们与我试图匹配的模式的斜率进行比较,看看它们是否'大致相同。

有更好的想法吗?我很想听听他们的声音!

编辑:感谢您的输入!我之前考虑过最小二乘法,但我不确定该去哪里。不过,在我收到输入之后,我认为首先计算每条线的最小二乘以稍微平滑数据,然后像 James 建议的那样缩放和拉伸模式应该可以得到我想要的东西。

我计划使用它来识别股票中的某些技术标志以确定买卖信号。已经有一些网站在某种程度上可以做到这一点(例如 stockfetcher),但我当然想自己尝试一下,看看是否可以做得更好。

0 投票
7 回答
5452 浏览

java - 在 Java 中提取标签值对的正则表达式

我有一个包含几行的文件,类似于:

而且我需要使用正则表达式提取地址,考虑到它可以包含点、特殊字符(ñ、ç)、áéíóú...

当前代码有效,但看起来很丑:。

编辑:地址字段也可以分为多行

编辑:我不能使用 Properties 对象或 YAML 解析器,因为该文件也包含其他类型的信息。