是否可以写下正则表达式,使得第一个$符号将替换为a(第二个带有a),第三个带有(等等?)
例如,字符串
This is an $example$ of what I want, $ 1+1=2 $ and $ 2+2=4$.
应该成为
This is an (example) of what I want, ( 1+1=2 ) and ( 2+2=4).
答案 0 :(得分:1)
根据Ruby中已发布的答案https://stackoverflow.com/a/13947249/6332575,您可以使用
yourstring.gsub(“$”)。with_index(1){| _,i | i.odd? ? “(”:“)”}
答案 1 :(得分:0)
一种间接解决方案的排序,但在某些语言中,您可以使用callback function进行替换。然后,您可以循环浏览该功能中的选项。这也可以使用两个以上的选项。例如,在Python中:
// Scale pipe larger from center area only (i.e., don't scale pipe "caps")
if pipeDirection == .Up {
pipe.centerRect = CGRect(x: 0, y: 0.2, width: 1.0, height: 0.4)
} else {
pipe.centerRect = CGRect(x: 0, y: 0.8, width: 1.0, height: -0.4)
}
pipe.yScale = CGFloat(pipeDirection.rawValue) * 1.5
或者,如果它们总是成对出现,就像您的示例中的情况一样,您可以匹配>>> text = "This is an $example$ of what I want, $ 1+1=2 $ and $ 2+2=4$."
>>> options = itertools.cycle(["(", ")"])
>>> re.sub(r"\$", lambda m: next(options), text)
'This is an (example) of what I want, ( 1+1=2 ) and ( 2+2=4).'
及其间的所有内容,然后替换$
并重用这些内容在使用组引用$
之间;但同样,并非所有语言都支持这些:
\1
答案 2 :(得分:0)
在R中,您可以使用str_replace(仅替换第一个匹配)和while循环来一次处理一对匹配。
user_in = input("Please enter a password next to this text: \n")
Password = hashlib.md5()
Password.update(user_in.encode("utf-8"))
Password.hexdigest()
它可能不是最有效的解决方案,但它会通过整个字符串来替换$和(和)。
答案 3 :(得分:0)
在JavaScript中:
function replace$(str) {
let first = false;
return str.replace(/\$/, _ => (first = !first) ? '(' : ')');
}