【发布时间】:2009-02-15 22:32:19
【问题描述】:
我正在写一篇关于正则表达式的学期论文,我对人们在提及正则表达式时使用“匹配”这个词的方式感到有些困惑。以下哪项是正确使用的措辞:
- “正则表达式匹配字符串”
或
- “字符串匹配正则表达式”
或者它们都是正确的?欢迎大家对此发表意见!我真的很想把这件事弄清楚,我认为澄清这一点会大大有助于我的理解。
【问题讨论】:
标签: regex terminology
我正在写一篇关于正则表达式的学期论文,我对人们在提及正则表达式时使用“匹配”这个词的方式感到有些困惑。以下哪项是正确使用的措辞:
或
或者它们都是正确的?欢迎大家对此发表意见!我真的很想把这件事弄清楚,我认为澄清这一点会大大有助于我的理解。
【问题讨论】:
标签: regex terminology
我认为两者都是正确的。这取决于你关注的是什么。如果您的重点是正则表达式本身,以查看它是否适用于给定的字符串或字符串集,那么您使用第一句话。相反,如果您对查看一组符合特定条件的字符串更感兴趣,则适用第二个。你知道,匹配在某些条件下具有某种等价的含义,所以这两个句子听起来都对我来说是等价的。
【讨论】:
字符串与正则表达式模式匹配,因此我会说后者更准确
【讨论】:
当两件事匹配时,(至少从逻辑角度来看)你提到它们的顺序无关紧要。
所以这取决于你想把重点放在什么上。
字符串匹配正则表达式:焦点在字符串上。
正则表达式匹配字符串:焦点在正则表达式上。
【讨论】:
后者对我来说听起来更好。正则表达式指定字符串可能匹配的模式。但两者都没有什么问题。
【讨论】:
如果你对我说任何一个,我就会明白你在说什么。我敢肯定,人们对我两者都说过,我从没想过需要更正任何一个。
【讨论】:
我同意字符串匹配(或不匹配)正则表达式。说清楚我为什么要说:正则表达式定义了一个语法,给定的字符串要么根据该语法格式正确。
【讨论】:
“正则表达式匹配字符串”
如果 RE 匹配整个字符串,则为真(例如,使用 ^ $ 或恰好匹配所有内容)。否则,我会写:正则表达式在字符串中有匹配项。
“字符串匹配正则表达式”
同样,如果正则表达式匹配所有内容,则为 true,否则听起来有点奇怪。
但确实,在整个匹配的情况下,这两个句子是等价的。
【讨论】:
由于您要在字符串中查找正则表达式,因此说您已找到该正则表达式更为正确,因为这是一种单向关系。
但至于哪个匹配哪个,这是一种双向关系,这并不重要(无论如何,用英语 - 我不能保证其他语言),所以任何一个都是正确的。
我更喜欢说字符串匹配正则表达式,因为 RE 是不变的部分并且字符串会发生变化。但这是个人喜好,不太可能与现实有任何关系:-)
【讨论】:
“字符串与正则表达式匹配”似乎是“字符串采用正则表达式定义的语言并同构”的简写。
“正则表达式匹配字符串”似乎是“从正则表达式编译的解析器自动机将解析字符串并在最终状态下停止”的简写。
【讨论】:
我会说:
在设计时,用户/开发人员创建一个匹配字符串的正则表达式。
在运行时,正则表达式引擎会找到一个与正则表达式匹配的字符串。
(不打算作为定义,只是常用用法的示例。)
【讨论】:
由于正则表达式表示可能无限的有限字符串集,我会说写成“字符串 s 匹配正则表达式 r”是最正确的。您也可以说“字符串 s 是正则表达式 r 生成的集合的成员”。
此外,您应该考虑使用 accept 和 reject 这两个词,尤其是如果您打算在论文中讨论有限自动机。
【讨论】: