我试图匹配确切的词与正则表达式,但它没有工作,因为我期望它是。下面是一个小的示例代码和数据,我正在尝试这个。我正在尝试匹配字符串中的c and java
单词,如果找到,则返回true。你知道吗
我正在使用这个regex \\bc\\b|\\bjava\\b
,但它也匹配c#,这不是我要找的。它应该只和那个词匹配。我怎样才能做到这一点?你知道吗
def match(x):
if re.match('\\bc\\b|\\bjava\\b', x) is not None:
return True
else: return False
print(df)
0 c++ c
1 c# silverlight data-binding
2 c# silverlight data-binding columns
3 jsp jstl
4 java jdbc
Name: tags, dtype: object
df.tags.apply(match)
0 True
1 True
2 True
3 False
4 True
Name: tags, dtype: bool
预期产量:
0 True
1 False
2 False
3 False
4 True
Name: tags, dtype: bool
您可以使用负lookback和负lookahead模式来确保每个匹配关键字的前面和后面都没有非空格字符:
演示:https://regex101.com/r/GOF8Uo/3
或者,只需将给定字符串拆分为一个单词列表,并测试您要查找的关键字集中是否有任何单词:
您是否尝试过使用regex测试站点,例如this one或this one??他们将分析你的正则表达式模式,并准确地解释你实际上试图匹配什么。还有很多其他的。你知道吗
我不熟悉python match函数,但它似乎将您的输入模式解析为
\bc\b |\bjava\b
在单词边界处匹配“c”或“java”。因此,它将在“0”的两端、“1”和“2”的开头找到一个“c”,为“3”返回“no match”,并在“4”中找到与“java”匹配的结果。你知道吗
相关问题 更多 >
编程相关推荐