另外,除非使用VERBOSE/X标志,否则这些空格是模式的一部分。所以,你要检查的是'AND ',而不是'AND'。如果你想要的话,你可能需要两边都有空格,而不仅仅是那些边(否则,'band leader'会匹配…),实际上,你可能需要\b,而不是空格(否则以'And another thing'开头的句子不会匹配)。
>>> s = "These are oranges and apples and pears, but not pinapples or .."
>>> r = re.compile(r'\bAND\b | \bOR\b | \bNOT\b', flags=re.I | re.X)
>>> r.findall(s)
['and', 'and', 'not', 'or']
你有一些问题。
首先,匹配是区分大小写的,除非使用
IGNORECASE
/I
标志忽略大小写。所以,'AND'
与'and'
不匹配。另外,除非使用
VERBOSE
/X
标志,否则这些空格是模式的一部分。所以,你要检查的是'AND '
,而不是'AND'
。如果你想要的话,你可能需要两边都有空格,而不仅仅是那些边(否则,'band leader'
会匹配…),实际上,你可能需要\b
,而不是空格(否则以'And another thing'
开头的句子不会匹配)。最后,如果你认为你需要
.*
在你的模式之前和之后以及$
和^
在它周围,你很有可能想要使用search
,findall
,或者finditer
,而不是match
。所以:
Debuggex Demo
试试这个:
a | b表示匹配a或b
\b表示单词边界
re.findall(pattern,string)返回字符串中pattern的所有实例的数组
相关问题 更多 >
编程相关推荐