如何制作Python正则表达式,有一个可选的启动要求?

时间:2018-05-18 04:36:18

标签: python regex python-2.7

所以我需要能够在一个句子中检查单词“view”,而不是从另一个单词中删除它,即使它是第一个单词。

let jsonString = """
                    {
                        "name":1,
                        "gender":"male",
                    }
                    """

struct Person: Codable {
    var name: String
    var gender: String

    public init(from decoder: Decoder) throws {
        do {
            let container = try decoder.container(keyedBy: CodingKeys.self)
            name = try container.decode(String.self, forKey: .name)
            gender = try container.decode(String.self, forKey: .gender)
        } catch {
            print("XXXXXX \(error)")
        }
    }
}

4 个答案:

答案 0 :(得分:1)

使用正则表达式时,您似乎正在寻找 word boundaries \b

尝试使用\bview\b作为正则表达式。 \b将与(^\w|\w$|\W\w|\w\W)匹配,因此它只会与独立字view匹配,而不会在其他字词中找到。

以下是一些例子:

rgx = r'\bview\b'

print(re.search(rgx, 'interview'))
print(re.search(rgx, 'view is the first word'))
print(re.search(rgx, ' view is after a space'))

# None
# <_sre.SRE_Match object; span=(0, 4), match='view'>
# <_sre.SRE_Match object; span=(1, 5), match='view'>

答案 1 :(得分:0)

字符串开头的&#34;视图&#34; case只能在每个字符串中发生一次,因此您可以单独检查。这可以通过使用一个if检查来完成,或者更简单,只需在目标字符串之前添加一个空格即可。例如,检查"view"中的str

if re.search(" view", " " + str): print("Found!")

答案 2 :(得分:0)

事件可以在开始,结束和中间,因此我们尝试捕获所有这些事件,同时忽略它作为其他文本的一部分出现的事件。

re.search(r"(^view)|(\sview$)|(\sview\s)"," view interview is view")

答案 3 :(得分:0)

此RegEx捕获每个在其中某处“查看”的Word。

/([A-z]*view[A-z]*)/gi