使用Ruby,在我想要替换的字符串中
something...
specialstring=360256
something...
与
something...
<script src="https://gist.github.com/someuser/360256.js"></script>
something...
我相信它可以用正则表达式(也许是gsub)完成,但我恐怕我不是那么精通。
编辑:“某事......”表示不应更改的文字。我想替换
的所有实例specialstring=10000
用字符串中的下面(提取数字)
<script src="https://gist.github.com/someuser/10000.js"></script>
10000可以是换行符终止的任何数字。
答案 0 :(得分:1)
▶ input = %|something...
▷ specialstring=360256
▷ something...|
#⇒ "something...\nspecialstring=360256\nsomething..."
▶ out_tmpl = '<script src="https://gist.github.com/someuser/%{tmpl}.js"></script>'
▶ puts input.gsub(/^specialstring=(.*)$/) { out_tmpl % { tmpl: $1.strip }}
#⇒ something...
# <script src=\"https://gist.github.com/someuser/360256.js\"></script>
# something...
这是一个或多或少的通用解决方案,它解析specialstring=ANYTHING
出现的输入,然后使用字符串格式化,将此ANYTHING
注入模板,替换原始模式。
答案 1 :(得分:0)
我自己不是红宝石专家,但我会试一试。
如果something...
是您的搜索模式并希望替换其中的任何内容,请将其用作匹配的正则表达式进行替换:
/(?<=something\.\.\.)[\s\r\n]*(.+?)[\s\r\n]*(?=something\.\.\.)/
但是,如果specialstring=360256
是你想要的并且想要替换它,那么根据另一个答案,这就是你的正则表达式:
/specialstring=360256/
进行了测试
更新1
是的,现在就明白了:
"something...\nspecialstring=360256\nsomething...".gsub(/specialstring=(\d+)/, '<script src="https://gist.github.com/someuser/\1.js"></script>')