我正在尝试使用python re来匹配具有特定模式的字符串。 我遇到的问题是,我有这个预期的句子:
"It is X. not X`
X可以是任何东西;一个单词,或一堆单词,或数字或数字。
我构建的模式是:
It is \w+. not \w+
只需使用
string.replace("X", "\w+")
如果X
是一个单词,或一堆单词,或者int,而不是数字,则它有效。如何构建我的模式以匹配此模式中的所有内容?
答案 0 :(得分:0)
.
是正则表达式中的一个特殊字符,可以匹配任何字符。因此.+
将匹配一个或多个字符。
r"It is .+\. not .+"
并非句点转义\.
,这是因为在这种情况下,您希望匹配实际的句号。
答案 1 :(得分:0)
因为.+
在某些情况下不起作用,例如
这是报价。不是双引号
这是一只狗。不是猫
我会用这个代替:
(?<=It is ).+(?=\.)|(?<=not ).+$
<强>解释强>
(?<=It is ).+(?=\.)
任何连续字符前面都有It is
,后跟一个点
|
或
(?<=not ).*$
任何连续字符前面都有not
,后面是行尾锚
(?<=It is ).*(?=\.)|(?<=not ).*$
答案 2 :(得分:0)
我已经想通了,可以使用str.replace("X", "(\w+|\d+\.\d+)")
来解决问题。希望可以帮助其他人解决同样的问题。