所以我需要能够在一个句子中检查单词“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)")
}
}
}
答案 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