我有一个字符串,我试图用相应的替换替换第一个匹配模式。EG 在我下面的示例中:如果bb
首先找到,将其替换为foo
并且不替换任何其他内容,但如果cc
首先找到,则将其替换为bar
并且不替换任何其他内容。
这几乎符合预期,除了replacement
参数不被解释为正则表达式,而是作为一个完整的字符串。(但pattern
根据需要,该参数被视为正则表达式)。
stri_replace_first_regex(
c(" bb cc bb cc "," cc bb cc bb ", " aa bb cc "),
pattern = " bb | cc ",
replacement = " foo | bar ")
输出:" foo | bar cc bb cc " " foo | bar bb cc bb " " aa foo | bar cc "
虽然我希望它输出" foo cc bb cc " " bar bb cc bb" " aa foo cc "
关于如何解决这个问题的任何想法?
谢谢。
更多上下文:
我的输入几乎可以有任何格式,它们是客户输入的邮政地址,我需要用标准化的东西替换街道的类型(例如,street
变成st
、road
inrd
和avenue
in av
)。这些单词中的任何一个都可以再次出现(例如),所以我只认为第一次出现是有效的,并且不能替换列表20 bis road of sesame street
中单词的后续出现。pattern