Python中的匹配占位符

Python中的匹配占位符,python,string,parsing,nlp,Python,String,Parsing,Nlp,我有一组短语,我在一段文本中对照它们 “尽快”这种简单的短语很容易检查,例如: if phrase in text: ... 我也有‘a{JJ}amount of’形式的短语,其中JJ是任何形容词的占位符。因此,基本上,如果文本包含类似“少量”的内容,那么短语“a{JJ}amount of”就存在了 如何匹配此表单的模式?您可以使用正则表达式来完成。例如,您可以执行以下操作: re.findall(r"a\s\w+?\samount of", text) 这将返回示例中给定短语的所有

我有一组短语,我在一段文本中对照它们

“尽快”这种简单的短语很容易检查,例如:

if phrase in text:
    ...
我也有‘a{JJ}amount of’形式的短语,其中JJ是任何形容词的占位符。因此,基本上,如果文本包含类似“少量”的内容,那么短语“a{JJ}amount of”就存在了


如何匹配此表单的模式?

您可以使用正则表达式来完成。例如,您可以执行以下操作:

re.findall(r"a\s\w+?\samount of", text)

这将返回示例中给定短语的所有实例<代码>\s\w+?\s将匹配单个单词,因此如果需要更改模式,您可以简单地修改该单词周围的单词。您可以通过执行类似于
phrase.replace(“{JJ}”,r“\s\w+?\s”)

正则表达式之类的操作,从短语大纲中找到模式
r'a\w+数量'
?谢谢,但我不确定这样是否行。我有数百个短语具有类似的占位符,我正在寻找一种非特定的处理方式。你需要确定一个词是否是形容词吗?因为这是一个更难的问题,所以你把这些短语放在一个文件的某个地方,格式是
'a{JJ}amount'
?然后,您可以按照建议使用正则表达式,只需将
{JJ}
替换为
w+
好的,我刚刚研究了动态生成正则表达式,结果证明您的解决方案非常有效。非常感谢。你是说
\b
而不是
\s
?后者匹配的是空格,而不是单词边界。@DanielRoseman不,
\b
在这里没有意义。例如,我不想匹配“small.amount of.”空格实际上是这个上下文中唯一有意义的词边界。但是这个表达式不会匹配“small.amount of”,因为现在您需要两个空格。而且
\w
只匹配字母数字字符,因此在“.”上不匹配。\b本质上是\w。这不是我想要的。但你是对的,我有多余的空间。