本文沿时间线追溯正则表达式从数学符号到多流派并存演进历程中的一个阶段。故事始于 1943年,这一年麦卡洛克与皮茨发表《神经活动内在概念的逻辑演算》,提出用二值逻辑单元模拟大脑神经元。这个被称为“麦卡洛克-皮茨神经元”的简化模型,成为人工神经网络与计算理论的共同源头,也为多年后正则表达式的诞生埋下了种子。了解这段历史,有助于我们看清正则表达式各流派的由来,以及它们在表达力与可控性之间做出的不同权衡。
前情提要:通过往期文章
我们见识了正则表达式在现代编程中的便捷语法——\d 匹配数字,(?:...) 只分组不捕获。尽管初学时我们可能会觉得这些语法天生如此,但事实上任何技术都有来路。要理解正则表达式为何是今天这个样子,我们需要先回答一个更根本的问题:它究竟从哪里来?答案是令人出乎意料的——它最初并非为处理文本而发明,而是源于科学家对大脑的数学想象。
一、1943:思想的种子——神经网络与逻辑
1943 年,美国神经生理学家沃伦·斯特吉斯·麦卡洛克(Warren Sturgis McCulloch)和逻辑学家小沃尔特·哈里·皮茨(Walter Harry Pitts Jr.)发表了一篇划时代的论文:《神经活动内在概念的逻辑演算》¹。在这篇论文中,他们提出了一个大胆的设想:大脑的神经元可以用简单的二值逻辑单元来模拟——每个神经元要么“兴奋”(1),要么“抑制”(0),由多个这样的单元组成的网络,本质上就是一个逻辑机器。这些单元后来被称为人工神经元(artificial neurons),或麦卡洛克-皮茨神经元(McCulloch–Pitts neurons)。
这种“麦卡洛克-皮茨神经元”模型是现代人工神经网络和计算理论的共同源头之一²。更重要的是,它提出了一种思考方式:简单的逻辑单元连接成网络,可以产生复杂的计算行为。这个想法,将在几年后启发另一位数学家,创造出正则表达式。
【注 1】McCulloch, W.S. and Pitts, W., "A Logical Calculus of the Ideas Immanent in Nervous Activity", Bulletin of Mathematical Biophysics, Vol. 5, 1943, pp. 115-133.
这篇 1943 年发表的论文是现代人工神经网络和计算理论的奠基之作。论文指出,神经活动具有“全或无”(all-or-none)的特性,这指的是神经元的发放遵循阈值规律——只有当输入信号累积超过一定阈值时,神经元才会发放脉冲,否则保持静息状态。这一特性使得用二值逻辑(0 和 1)来模拟神经活动成为可能。论文中提出的“麦卡洛克-皮茨神经元”模型,至今仍是深度学习领域的基本概念。此外,论文指出含有环路的神经网需要“更复杂的逻辑手段”来处理,这直接启发了数学家克莱尼在 1951 年对“正则事件”的形式化研究——即我们今天所使用的正则表达式的数学源头。
【注 2】麦卡洛克-皮茨神经元是一种极度简化的数学模型——麦卡洛克-皮茨模型(McCulloch–Pitts model,简称 MP 模型),在学术史上也被称为“阈值逻辑单元”(Threshold Logic Unit)或“线性阈值单元”(Linear Threshold Unit)。真实的生物神经元远比这复杂,但正是这种简化让数学分析成为可能。今天深度学习中的“人工神经元”,其基本思想仍可追溯至此。克莱尼正是在研究这类神经网络能识别何种模式时,发明了“正则事件”这一代数系统来加以描述,架起了通往正则表达式的桥梁。
二、结语:等待一位数学家
麦卡洛克和皮茨的模型将大脑设想为由简单逻辑开关构成的网络。这个设想本身已经足够大胆,但它立刻引出了一个更难的问题:这样的网络究竟能“理解”什么样的模式?这个问题的答案,需要等待一位数学家的登场。
此番炼器手札,炉火尚未全熄。若道友观之有趣,或可暂留此间,结一尘缘。待下回开炉铸器,新得感悟,必先与同道分享。