【发布时间】: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)^(?:.*\\[|.*,)(.*)(?<![\\]\"])"好吧,我出去了 - 祝你好运 :) 请用您的实际输入更新您的问题。