**编辑**
我正在尝试将源A中的一个名称(ST MARYS MEDICAL CENTER
)与源B中的另一个名称(St. Mary's Medical Center: Welcome
)进行比较。 A和B不是数组。
我想保留St. Mary's Medical Center
。从本质上讲,我需要确认它们是同一个机构,并使价值“正常化”。
我想忽略大小写,所有句点(.
)和所有撇号('
)。如果匹配,我希望保留B中的匹配值。
例如:
> a = "ST MARYS MEDICAL CENTER"
=> "ST MARYS MEDICAL CENTER"
> b = "St. Mary's Medical Center: Welcome"
=> "St. Mary's Medical Center: Welcome"
# need help here
> re = /#{a}[^'.]*/i
=> /ST MARYS MEDICAL CENTER[^'.]*/i
> re.match(b)[0]
=> "St. Mary's Medical Center"
假设我得到了正确的正则表达式,匹配是否会包含标点符号?
答案 0 :(得分:2)
我建议不要打扰正则表达式吗?
相反,请尝试剥离标点符号并更新b
,然后直接比较字符串以查看它们是否匹配。
b.upcase.sub(/[^\w\s]/, '') == a
答案 1 :(得分:0)
你也可以使用这样的String#scan
a = "St. Mary's Medical Center"
match = "ST MARYS MEDICAL CENTER"
a.upcase.scan(/[^.']*/).join == match
#=> true