【问题标题】:Pattern matching in python W/O regex没有正则表达式的python中的模式匹配
【发布时间】:2019-11-21 18:32:12
【问题描述】:

为了规范段落,我面临查找和替换模式的挑战。举个例子更容易理解:我有很多类似的词:

  • nm5638238.tmp、nm23345.tmp、nm56382334.tmp等
  • myfile0x233454、myfile0x233124、myfile0x23AW54 等

等等。问题是我不喜欢这种自定义的正则表达式方法(我的意思是,每种情况我都需要一个正则表达式)。我需要一种“无人值守”的方法,例如发现一种模式是 myfileSOMETHING,另一种是 nmSOMETHING.tmp 等等。有什么 NLP 技术可以推荐给我吗?

谢谢!

【问题讨论】:

  • 首先,您必须知道模式才能找到并替换它,对吧?实际上,正则表达式不是自定义的,而是一种常规语言。您可以构建自己的自动机,但我的意思是,无论如何您最终都会得到一个类似正则表达式的模块。您不需要为数百个(?)奇怪的文件名中的每一个使用一个表达式,而是一个用于 nm[0-9]*.tmp 和一个用于 myfile0x[0-9]* 以匹配您的表达式。也许再看看正则表达式语法:docs.python.org/3/library/re.html#regular-expression-syntax。您可以在 chomsky 层次结构上更上一层楼,但我认为没有任何好处。

标签: python nlp pattern-matching nltk


【解决方案1】:

根据您的描述,您不需要那么多正则表达式来解决这个问题。我的意思是,如果这是你的两种模式,你甚至可以去: (如果 'para' 是你的段落字符串)

import re
new_para = re.sub(r'myfile\S+|nm\S+', 'REPLACEMENT STRING', para)

这对你有用吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    相关资源
    最近更新 更多