使用regex或其他方法在字符串python中查找单词

2024-04-20 13:39:13 发布

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

我试图遍历一个单词数组并检查它们是否存在于字符串中。我知道有很多方法可以做到这一点,比如使用检索但是我需要在一些词之间有所区别(比如Java和Javascript)

举个例子:

import re

s = 'Some types (python, c++, java, javascript) are examples of programming.'
words = ['python', 'java', 'c++', 'javascript', 'programming']

for w in words:
    p = re.search(w, s)
    print(p)

>><_sre.SRE_Match object; span=(12, 18), match='python'>
>><_sre.SRE_Match object; span=(20, 24), match='java'>
>><_sre.SRE_Match object; span=(20, 30), match='javascript'>
>><_sre.SRE_Match object; span=(48, 59), match='programming'>

上述方法在一定程度上是可行的,但与Java和Javascript相匹配。你知道吗

编辑:这是我的解决方案

for w in words:
        regexPart1 = r"\s"
        regexPart2 = r"(?:!+|,|\.|\·|;|:|\(|\)|\"|\?+)?\s"
        p = re.compile(regexPart1 + re.escape(w) + regexPart2 , re.IGNORECASE)
        result = p.search(s)

Tags: 方法reforobjectmatchjavajavascriptprogramming
1条回答
网友
1楼 · 发布于 2024-04-20 13:39:13

如果您想在正则表达式中添加单词边界标记,可以使用r'/bjavascript/b'来代替'javascript'。(还要注意+应该在c++中转义)

此外,要匹配的字的迭代缺乏编译regexp的潜在效率。最好将regexp合并为一个:

w = r'\b(?:python|java|c\+\+|javascript|programming)\b'
re.search(w,s)

相关问题 更多 >