2024-05-03 16:06:32 发布
网友
我正在尝试使用python re来匹配具有特定模式的字符串。 我遇到的问题是,我有这样一句话:
"It is X. not X`
X可以是任何东西;一个单词,或一堆单词,或数字,或数字。你知道吗
我构建的模式是:
It is \w+. not \w+
只是使用
string.replace("X", "\w+")
如果X是一个单词,或一堆单词,或int,但不是数字,它就可以工作。如何构建模式以匹配此模式中的所有内容?你知道吗
X
因为.+在某些情况下不起作用,例如
.+
It is quote. not a double-quoteIt is a dog. not a cat
It is quote. not a double-quote
It is a dog. not a cat
我会用这个来代替:
(?<=It is ).+(?=\.)|(?<=not ).+$
解释
(?<=It is ).+(?=\.)前面是It is后面是点的任何连续字符
(?<=It is ).+(?=\.)
It is
|或
|
(?<=not ).*$以not开头,后跟行尾锚定的任何连续字符
(?<=not ).*$
not
(?<=It is ).*(?=\.)|(?<=not ).*$
Demo
我想,我们可以用str.replace("X", "(\w+|\d+\.\d+)")来解决这个问题。希望能帮助其他有同样问题的人。你知道吗
str.replace("X", "(\w+|\d+\.\d+)")
.是正则表达式中与任何字符匹配的特殊字符。因此.+将匹配一个或多个字符。你知道吗
.
r"It is .+\. not .+"
并不是说句点是转义的\.,这是因为在这种情况下,您希望匹配实际的句点。你知道吗
\.
因为
.+
在某些情况下不起作用,例如我会用这个来代替:
(?<=It is ).+(?=\.)|(?<=not ).+$
解释
(?<=It is ).+(?=\.)
前面是It is
后面是点的任何连续字符|
或(?<=not ).*$
以not
开头,后跟行尾锚定的任何连续字符(?<=It is ).*(?=\.)|(?<=not ).*$
Demo
我想,我们可以用
str.replace("X", "(\w+|\d+\.\d+)")
来解决这个问题。希望能帮助其他有同样问题的人。你知道吗.
是正则表达式中与任何字符匹配的特殊字符。因此.+
将匹配一个或多个字符。你知道吗并不是说句点是转义的
\.
,这是因为在这种情况下,您希望匹配实际的句点。你知道吗相关问题 更多 >
编程相关推荐