【问题标题】:Regex match for the given set of expressions (Extracting last column element )给定表达式集的正则表达式匹配(提取最后一列元素)
【发布时间】:2020-03-17 01:32:15
【问题描述】:

我有兴趣提取在最后一列中找到的元素。

问题是,最后一列可能有一个元素在 [] 中或者是纯文本。 如果它在 [ ] 中,则可以在其中包含 ( , ) 逗号,这意味着普通的 csv 分隔字符串不会这样做..

那么当最后一个元素可能以任何一种格式出现时,我应该使用什么类型的正则表达式匹配器来获取它。

字符串的格式如下:

item_id,title,short_description,long_description,product_type,brand,prediction

示例字符串:

32734061,The Cambridge History of Philosophy 1870 1945,简短描述不可用,”精装本, Cambridge University Press, 2003, ISBN13 9780521591041, ISBN10 052159104X”,Books,NA,['Thomas Baldwin (Editor)' ]

48930358,法庭上的作者:版权剧院的场景,”马克·罗斯使用案例研究来展示性别和文质如何影响作者在法庭上的自我展示,以及个人风格、公众形象、以及小说家、剧作家、诗人、摄影师和漫画家的历史影响了围绕版权问题的法律学说的发展。",Authors in Court,Books,NA,None

ps:如果有人能给我一个正则表达式来单独解析所有列,那就太好了,但是目前我最关心的是最后一个标记。

【问题讨论】:

  • 试试这个正则表达式,如果列数是固定的,它可以工作:^[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,(.+),参见示例:regex101.com/r/ymLc0k/2
  • @HieuNguyenVan : 失败 : 48930358, 法庭上的作者 : 版权剧院的场景,”马克·罗斯使用案例研究来展示性别和文质如何影响作者在法庭上的自我展示以及小说家、剧作家、诗人、摄影师和漫画家的个人风格、公众形象和历史如何影响围绕版权问题的法律学说的发展。”,Authors in Court,Books,NA,None
  • 试试这个:, ?(\[[^]]*\]$)|, ?([^,]+$),演示链接:regex101.com/r/tPeMja/2
  • @HieuNguyenVan : 失败 : 21087801, 中风后的锻炼和体能训练:练习手册,简短描述不可用,”

    这个。它的目标是框架,中风。感兴趣中风后的身体活动。""

    中风后的锻炼和健身训练""全面讨论了管理中风、证据中风、如何设计、交付、适应幸存者。",Books,NA,"['Peter Langhorne',' Frederike Van Wijck','Gillian E. Mead']"

  • 如果您在多行中使用单个项目,请使用 Pattern.DOTALL 或添加 (?s) 以使点也匹配换行符。见this updated demo。作为 Java 字符串:"(?s)^(?:.*\\[|.*,)(.*)(?<![\\]\"])" 好吧,我出去了 - 祝你好运 :) 请用您的实际输入更新您的问题。

标签: java regex parsing


【解决方案1】:

您可以使用此正则表达式获取最后一列

/,("?\[[^\]]+\]"?|\S+)$/

你的 js 代码会是这样的

var string = "32734061,The Cambridge History of Philosophy 1870 1945,short description is not available,\"Hardcover, Cambridge University Press, 2003, ISBN13 9780521591041, ISBN10 052159104X\",Books,NA,['Thomas Baldwin (Editor)']";
var output = string.match(/,(\[[^\]]+\]|\S+)$/);
console.log( output[0]);

更新

你可以在这里测试你的数据https://regex101.com/r/AZMOGA/1

【讨论】:

  • 当最后一列元素是:['Peter Langhorne', 'Frederike Van Wijck', 'Gillian E. Mead] 时不起作用
  • 它工作正常。你可以在这里查看regex101.com/r/AZMOGA/1
  • 当最后一个元素为 : "['Peter Langhorne', 'Frederike Van Wijck', 'Gillian E. Mead']" 时失败 ps:这一次,甚至涉及引号,所以一些条目也可能有引号
  • 很简单,你可以在开头和结尾添加“?”。你需要尝试regex101.com/r/AZMOGA/2
  • 此条目失败 : 52927173,"Manual Drive Trains & Axles, A3",Details Coming Soon,"
    Manual Drive Trains and Axles 详细介绍了理论、操作、诊断和现代服务 对于那些准备 ASE 认证测试 A3、手动传动系统和车轴的人来说,这是一个宝贵的资源。
    • 该文本与 NATEF 任务列表的手动传动系统和车轴部分相关.
    • 详细介绍了传动系统工具和维修设备(包括千分尺和卡尺)的使用情况。

    ",Books,NA,None
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
相关资源
最近更新 更多