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

2024-05-03 16:06:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

"It is X. not X`

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

我构建的模式是:

It is \w+. not \w+

只是使用

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

如果X是一个单词,或一堆单词,或int,但不是数字,它就可以工作。如何构建模式以匹配此模式中的所有内容?你知道吗


Tags: 字符串re内容stringis模式notit
3条回答

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

It is quote. not a double-quote

It is a dog. not a cat

我会用这个来代替:

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

解释

(?<=It is ).+(?=\.)前面是It is后面是点的任何连续字符

|

(?<=not ).*$not开头,后跟行尾锚定的任何连续字符

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

Demo

我想,我们可以用str.replace("X", "(\w+|\d+\.\d+)")来解决这个问题。希望能帮助其他有同样问题的人。你知道吗

.是正则表达式中与任何字符匹配的特殊字符。因此.+将匹配一个或多个字符。你知道吗

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

并不是说句点是转义的\.,这是因为在这种情况下,您希望匹配实际的句点。你知道吗

相关问题 更多 >