代码之家  ›  专栏  ›  技术社区  ›  user3369592

正则表达式,用于读取由引号和分号分隔的行

  •  0
  • user3369592  · 技术社区  · 10 年前

    例如,我有一行代码:

    "12345";"ISBN345";"8"
    

    我想写一个正则表达式来提取12345,ISBN345,8。

    如何编写此正则表达式?

    更新:抱歉。

    我没有说清楚。这是我的真实数据:

    "276729";“052165615X”;"3"

    (我的数据有很多行,这一行只是一个示例)。我想提取 276729 (用户id)作为一个元素, 052165615X (书号)为一, 3 (书籍评级)为一(这意味着我们需要每行与正则表达式匹配三次,因此每次读取一行时我可以创建三个对象),但不能提取 276729 052165615X 3 一次性

    3 回复  |  直到 10 年前
        1
  •  1
  •   axblount    10 年前
    "([^"]+)"(;"([^"]+)")*
    

    [^"]+ 将匹配非引号字符的非空序列。您可以切换 + * 如果字符串可以为空。

    整个正则表达式将是一个非引号的单引号序列,后跟零个或多个用分号分隔的引号序列。

        2
  •  1
  •   Michael Hobbs    10 年前

    选项1:将匹配并拆分为num、num、letters、num

    "(\d+)";"(\d+)(.+)";"(\d+)"
    

    选项2:将匹配并拆分为num、numletters、num

    "(\d+)";"(\d+.+)";"(\d+)"
    
        3
  •  1
  •   chris85 Ferenc Kurucz    10 年前

    我认为这应该对你有用。

    "(\d+)";"(.*?)";"(\d+)"

    假设第一个和第三个值总是数字,并且只有数字。第二个值似乎可以是任何这样的值 .*? 将允许一切都在那里,直到它遇到第一个双引号。