regex - 正则表达式匹配 rubular 但不是 Ruby
问题描述
我正在尝试"A1RKKUPIHCS9HS"
从字符串返回cheese
:
cheese = "#<struct Peddler::Marketplace id=\"A1RKKUPIHCS9HS\",..."
我都试过了scan
,match
就像这样:
cheese.match(/(?<=id=\\").{14}/)
cheese.scan(/(?<=id=\\")./)
它适用于Rubular,但是当我在 Ruby 中尝试它时,它不起作用。不知道为什么。
解决方案
在 Rubular 输入以下内容作为测试字符串:
#<struct Peddler::Marketplace id="A1RKKUPIHCS9HS",...
也就是说,不要将字符串放在双引号中或在字符串中转义双引号。Rubular 会解决这个问题,就像它用两个正斜杠围绕您的正则表达式一样。
你希望你的正则表达式是/(?<=id=").{14}/
. /(?<=id=\").{14}/
这与不需要转义双引号相同,但转义它会使其保持不变,因此不会造成任何伤害。Ruby 将带有正则表达式的双(和单)引号视为没有特殊含义的普通字符。
推荐阅读
- apache-kafka - 使用 kafka 将数据从 MySQL 导入 Postgres
- google-analytics - 如何使用标签管理器进行跨域,如果我更改我的代码站点,我会失去什么?
- c# - Unity 使用协程在 UI 中显示多张图片
- swift - 如何测试firebase动态链接以重定向到已卸载应用程序的TestFlight?
- python - DRF 图像 url 未在过滤时返回
- php - 为什么我在 openssl_encrypt 中使用不同的输入得到相同的结果
- html - openUI5 使用自定义 data-sap-ui-resourceroots 为应用程序做描述符无法加载 component-preload.js
- python - 年龄如何分类为分类变量?
- excel - VBA-遍历单元格数组以获取密码取决于参数
- java - 不要通过插入/删除/创建请求 JDBC