Python使用re来匹配特定模式中的字符串

时间:2017-05-19 03:29:33

标签: python regex

我正在尝试使用python re来匹配具有特定模式的字符串。 我遇到的问题是,我有这个预期的句子:

"It is X. not X`

X可以是任何东西;一个单词,或一堆单词,或数字或数字。

我构建的模式是:

It is \w+. not \w+

只需使用

string.replace("X", "\w+")

如果X是一个单词,或一堆单词,或者int,而不是数字,则它有效。如何构建我的模式以匹配此模式中的所有内容?

3 个答案:

答案 0 :(得分:0)

.是正则表达式中的一个特殊字符,可以匹配任何字符。因此.+将匹配一个或多个字符。

r"It is .+\. not .+"

并非句点转义\.,这是因为在这种情况下,您希望匹配实际的句号。

答案 1 :(得分:0)

因为.+在某些情况下不起作用,例如

  

这是报价。不是双引号

     

这是一只狗。不是猫

我会用这个代替:

(?<=It is ).+(?=\.)|(?<=not ).+$

<强>解释

(?<=It is ).+(?=\.)任何连续字符前面都有It is,后跟一个点

|

(?<=not ).*$任何连续字符前面都有not,后面是行尾锚

(?<=It is ).*(?=\.)|(?<=not ).*$

Demo

答案 2 :(得分:0)

我已经想通了,可以使用str.replace("X", "(\w+|\d+\.\d+)")来解决问题。希望可以帮助其他人解决同样的问题。