我正在处理导出的.csv文件中包含注释字段的导出文件。导出的注释看起来像这样。
" AC)Dianne - #或拨打的代码不正确。 AC)dianne - #或拨打的代码不正确。 WDB)Dianne - 错误号码。 AC)Dianne - 拨打的#或代码不正确。"
在此字段中,我们有一位用户将笔记和实际笔记本身留下。
文件中的分隔符是" AC)"或者" WDB)"
我需要把它们写成:
AC) Dianne - # or code dialed is incorrect.
AC) dianne - # or code dialed is incorrect.
WDB) Dianne - Wrong Number.
AC) Dianne - # or code dialed is incorrect.
使用正则表达式和ruby函数.split我可以在分隔符后输出文本,但是我丢失了捕获笔记的用户。
红宝石
notes.split( /AC\)|WDB\)/ ).each do |n|
puts n
end
输出
Dianne - # or code dialed is incorrect.
dianne - # or code dialed is incorrect.
Dianne - Wrong Number.
Dianne - # or code dialed is incorrect.
在上面的代码中,我不知道谁离开了个人笔记的用户(AC,WDB)。
我不确定是否需要切换到.scan,更改正则表达式(即包括lookbehind)等。 有没有人知道如何捕获用户和文本看起来像这样?
输出
AC) Dianne - # or code dialed is incorrect.
AC) dianne - # or code dialed is incorrect.
WDB) Dianne - Wrong Number.
AC) Dianne - # or code dialed is incorrect.
答案 0 :(得分:4)
根据以下前瞻分割输入,
(?=AC\)|WDB\))
Lookarounds是零宽度断言。它不会匹配任何字符,但它用于条件检查目的。
<强>代码:强>
> "AC) Dianne - # or code dialed is incorrect. AC) dianne - # or code dialed is incorrect. WDB) Dianne - Wrong Number. AC) Dianne - # or code dialed is incorrect.".split(/(?=AC\)|WDB\))/)
=> ["AC) Dianne - # or code dialed is incorrect. ", "AC) dianne - # or code dialed is incorrect. ", "WDB) Dianne - Wrong Number. ", "AC) Dianne - # or code dialed is incorrect."]
答案 1 :(得分:0)