我在这里看到了不同的答案,但不幸的是,这些答案都不适合我的情况.所以我希望你不介意.
所以我需要匹配两个大括号{}之间的所有内容,除了匹配以@开头且没有这些大括号的情况,例如:
这是我的测试字符串,1,2,3有效,而最后一个不应该是:
1 {eww}
2 r23r23{fetwe}
3 #{d2dded}
4 @{d2dded}
Run Code Online (Sandbox Code Playgroud)
我正在尝试:
(?<=[^@]\{)[^\}]*(?=\})
Run Code Online (Sandbox Code Playgroud)
然后只有第2和第3个选项匹配(没有第一个) https://regex101.com/r/qRInUf/2/
然后我在尝试:
\{(.*?)\} or [^@]\{(.*?)\}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我都无法匹配1,2,3值 https://regex101.com/r/uYRtLD/1
在此先感谢您的任何建议.
编辑:这是为java.
我在记事本++中有以下文本行
Type, Layer, Env, key, action, timestamp, performedBy, desc,
Run Code Online (Sandbox Code Playgroud)
我想把它转换成
'Type', 'Layer', 'Env', 'key', 'action', 'timestamp', 'performedBy', 'desc',
Run Code Online (Sandbox Code Playgroud)
我写在 find [a-zA-Z]*,它给了我每个逗号分隔的字符串,我应该在 replace 中输入什么来让它们用引号括起来?
使用image_tag时,提供的Nil位置出现参数错误。如何使image_tag仅在存在相应图像时才显示的位置为可选?这是与Ruby on Rails 5一起使用的。
这是我当前的显示页面视图:
<p id="notice"><%= notice %></p>
<%= image_tag @restaurant.image_url %>
<p>
<strong>Name:</strong>
<%= @restaurant.name %>
</p>
<p>
<strong>Address:</strong>
<%= @restaurant.address %>
</p>
<p>
<strong>Phone:</strong>
<%= @restaurant.phone %>
</p>
<p>
<strong>Website:</strong>
<%= @restaurant.website %>
</p>
<%= link_to 'Edit', edit_restaurant_path(@restaurant), class: 'btn btn-link' %> |
<%= link_to 'Back', restaurants_path, class: 'btn btn-link' %>
Run Code Online (Sandbox Code Playgroud) 我有一个由用户输入的字符串.他们可以添加链接的链接,但我们只希望某些用户能够点击链接.我想要做的是用它里面的文本替换任何标签.如果有一个链接但是当有多个链接时无法弄清楚如何做,我已设法做到了.
这是我目前拥有的,并尝试了许多变化来达到这个目的:
url_text = text.split("<a").last.split("</a>").first.split('>').last
text.gsub! /<a.+a>/m, url_text
Run Code Online (Sandbox Code Playgroud)
但它仅适用于标记的第一个实例.
我收到的字符串如下所示:
text = <div>blah blah blah.<br /><br /></div>\r\n<div><a href=\"http://www.google.com\">Google</a><br />Another link: <br /> <a href=\"http://www.test.com\">Test Link</a><br /><br /></div>"
Run Code Online (Sandbox Code Playgroud)
我想要它说:等等等等等等.谷歌另一个链接:测试链接
任何帮助将不胜感激.如果您需要更多代码或信息,请与我们联系.
所以写这个的标准方法似乎是array.include?(object)。但是,与object.in(array)相比,我发现很难快速阅读和理解。红宝石中有这样的东西吗?
我刚刚再次遇到的示例是(user_role是一个字符串,而allowed_user_roles是一个字符串数组):
allowed_user_roles.include?(user_role)
Run Code Online (Sandbox Code Playgroud)
我知道它可能是个人喜好,但是我发现它很容易阅读和理解。
user_role.in(allowed_user_roles)
Run Code Online (Sandbox Code Playgroud) 我正在编写一个ruby脚本,发现了这种奇怪的行为。
使用 ruby 2.4.2 [x86_64-darwin16]
基本上,我试图回显两个分开的消息,在index.rb文件中我得到了:
exec("echo 'teste'")
exec("echo 'teste2'")
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时 ruby ./index.rb
输出为:
teste
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?
这不是输出吗?
testeteste2
Run Code Online (Sandbox Code Playgroud) active我正在尝试向我的表添加新列students。
我跑去rails g migration add_active_to_students active:boolean生成这个迁移:
class AddActiveToStudents < ActiveRecord::Migration[5.0]
def change
add_column :students, :active, :boolean, default: true
end
end
Run Code Online (Sandbox Code Playgroud)
但是当我运行时rails db:migrate我收到此错误:
PG::DuplicateColumn:错误:关系“学生”的列“活动”已存在:ALTER TABLE“学生”添加“活动”布尔值默认“t”`
正如您所看到的,实际上没有一active列students:
create_table "students", force: :cascade do |t|
t.integer "club_id"
t.string "email"
t.string "address_line_1"
t.string "address_line_2"
t.string "city"
t.string "state"
t.integer "postcode"
t.string "phone1"
t.string "phone2"
t.string "first_name"
t.string "last_name"
t.date "dob"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "picture"
t.integer "payment_plan_id"
t.string "parent1" …Run Code Online (Sandbox Code Playgroud) 字符串在Ruby中是可变的。这意味着-与Java不同,解释器不能使用相同的对象来表示字符串文字(即"test",在for循环中,每次迭代都会创建一个新对象)。
有人可以向我解释为什么会这样吗?即,为什么可变性会阻止使用同一对象来表示字符串文字?
我想知道 Ruby 是否irb有能力提供方法/函数签名或描述。
我知道我可以在 irb 中做类似的事情
[].methods.sort
Run Code Online (Sandbox Code Playgroud)
并获取数组可用的所有方法/函数,但如何获取irb有关特定方法/函数的更多信息(在 中)?
有点相关: 确定 Rails 中的 ruby 版本
如何RAILS_VERSION从内部找出来rails console?
ruby ×8
regex ×3
string ×2
activerecord ×1
arrays ×1
exec ×1
irb ×1
java ×1
notepad++ ×1
postgresql ×1
regex-group ×1
rubygems ×1
shell ×1