Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中不带正则表达式的模式匹配_Python_Nlp_Pattern Matching_Nltk - Fatal编程技术网

python中不带正则表达式的模式匹配

python中不带正则表达式的模式匹配,python,nlp,pattern-matching,nltk,Python,Nlp,Pattern Matching,Nltk,为了规范一个段落,我面临着查找和替换模式的挑战。举个例子更容易理解:我有很多词,比如: nm5638238.tmp、nm23345.tmp、nm56382334.tmp等 myfile0x233454、myfile0x233124、myfile0x23AW54等 等等。问题是,我不喜欢regex方法,因为它是如此定制(我的意思是,我需要一个regex用于每个案例)。我需要一种“无人参与”的方法,比如发现一种模式是例如myfileSOMETHING,另一种是nmSOMETHING.tmp,等等

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

  • nm5638238.tmp、nm23345.tmp、nm56382334.tmp等
  • myfile0x233454、myfile0x233124、myfile0x23AW54等
等等。问题是,我不喜欢regex方法,因为它是如此定制(我的意思是,我需要一个regex用于每个案例)。我需要一种“无人参与”的方法,比如发现一种模式是例如myfileSOMETHING,另一种是nmSOMETHING.tmp,等等。有什么NLP技术可以推荐给我吗


谢谢

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


这对你有用吗?

首先,你必须知道模式才能找到并替换它,对吗?实际上,regex不是定制语言,而是一种常规语言。你可以建立你自己的自动机,但我的意思是,你最终会得到一个类似正则表达式的模块。您不需要为数百个(?)奇怪的文件名中的每一个都使用一个表达式,而是为nm[0-9]*.tmp使用一个表达式,为myfile0x[0-9]*使用一个表达式,以便匹配您的表达式。也许再看看正则表达式语法:。你可以在乔姆斯基的等级制度上更上一层楼,但我认为没有任何好处。
import re
new_para = re.sub(r'myfile\S+|nm\S+', 'REPLACEMENT STRING', para)