我有一些看起来像这些的字符串:
/challenges/:challenge_id/submissions/:id
/challenges/:challenge_id/submissions
/api/v1/submissions/:id
/submissions
以'开头的字符串:'以' /'结尾或者一个空行是Rails路径参数。即:' challenge_id'和':id'
我想用这个字符串做两件事
第一个例子的输出:
arr = [':challenge_id',':id']
new string = '/challenges/1/submissions/1'
我已经尝试了这个,但它匹配所有内容
/[:[a-z*]]/
我在http://rubular.com/进行测试,因为我需要在Ruby代码中运行它。
答案 0 :(得分:2)
如果您想匹配可能包含大写字母的 params ,那么您可以使用def func2(x):
def H1_coeff(t,args):
return exp(-((t-4)/2.0) ** 2)
H0 = np.pi*w * a.dag() *a
Hi= delta[x]*(a.dag())
H = [H0, [Hi,H1_coeff]]
result = mesolve(H, psi0, tlist, c_ops, [])
numer=expect(n,result.states)
print delta[x], "done"
return numer
简写:
\w
这将匹配所有参数,包括大写字母。
:\w+
Ruby代码:
# For example:
/challenges/:Challenge_id/submissions/:ID
答案 1 :(得分:2)
arr = []
"/challenges/:challenge_id/submissions/:id".gsub(/:[^\/]+/){|s| arr.push(s); "1"}
# => "/challenges/1/submissions/1"
arr
# => [":challenge_id", ":id"]
答案 2 :(得分:0)
正则表达式应该是这样的:
(:[A-Z] *)
()用于捕获组。
“*”应该在字符类之外。
要改善当前的正则表达式,您可以这样做:
(\ /:[A-Z] +)
添加正斜杠“/”,所以不要在param变量的中间匹配“:”并将“*”运算符更改为“+”,所以不要单独匹配“:”。